在 Android 中,ActivityResultLauncher<ScanOptions>
本身并不控制扫描页面的屏幕方向。它只是一个用于启动活动(Activity)并接收结果的接口。要设置扫描页面(即启动的 Activity)为竖屏模式,你需要在该 Activity 的配置中指定屏幕方向。
这里有几种方法可以设置 Activity 的屏幕方向为竖屏:
1. 在 AndroidManifest.xml 中设置
在你的 AndroidManifest.xml
文件中,找到你的扫描 Activity 的 <activity>
标签,并添加 screenOrientation
属性:
<activity android:name=".ScanActivity" | |
android:screenOrientation="portrait"> | |
... | |
</activity> |
在这里,portrait
表示竖屏模式。
2. 在代码中动态设置
你也可以在扫描 Activity 的 onCreate
方法中动态设置屏幕方向:
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); | |
// 其他初始化代码... | |
} |
setRequestedOrientation
方法接受一个 ActivityInfo.ScreenOrientation
枚举值,这里我们使用了 SCREEN_ORIENTATION_PORTRAIT
来指定竖屏模式。
3. 使用ActivityResultLauncher启动Activity
当你使用 ActivityResultLauncher
来启动扫描 Activity 时,你只需要确保启动的 Intent 指向了正确配置的 Activity 即可。屏幕方向的设置已经在 Activity 本身中完成,与 ActivityResultLauncher
的使用无关。
ActivityResultLauncher<ScanOptions> scanLauncher = registerForActivityResult( | |
new ActivityResultContracts.StartActivityForResult(), | |
new ActivityResultCallback<ActivityResult>() { | |
@Override | |
public void onActivityResult(ActivityResult result) { | |
if (result.getResultCode() == RESULT_OK) { | |
// 处理扫描结果 | |
} | |
} | |
} | |
); | |
ScanOptions scanOptions = new ScanOptions(); // 假设你有一个ScanOptions类,用于配置扫描 | |
Intent intent = new Intent(this, ScanActivity.class); | |
// 如果需要,可以将ScanOptions作为Extra传递给Activity | |
intent.putExtra("scan_options", scanOptions); // 这取决于你的ScanActivity如何处理这些选项 | |
scanLauncher.launch(intent); // 启动扫描Activity |
在这个例子中,ScanActivity
已经在其配置中指定了屏幕方向为竖屏,所以当你通过 scanLauncher.launch(intent)
启动它时,它将以竖屏模式显示。