android如何在Fragment中实现竖屏二维码扫描?
How to implement QR code scanner in Fragment in portrait mode in android?
我正在开发一个应用程序,在这个应用程序中我必须实现 QR 码扫描器,我可以在 Zxing 库的帮助下在 activity 中轻松实现这个东西但问题是扫描器应该在fragment 和在 ViewPager 中添加的 Fragment,我还想自定义扫描仪的视图。
将此库用于 QR 码扫描器,它是 ZXING 扫描器项目的修改版,可轻松检测 Android QR 码。QR Code Scanner
对于 Android 工作室用户
repositories {
maven {
url "https://jitpack.io"
}
}
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
首先,您需要通过打开相机(扫描器)来触发一个 Intent。
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
然后,如果在一个Fragment中被触发,那么写,否则你的请求代码会出错。
getActivity().startActivityForResult(intent, 0);
如果来自 Activity
startActivityForResult(intent, 0);
那么,它必须是一个 Activity 你需要扫描仪捕获结果的地方,我已经捕获并因此显示在 Toast 中。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Toast.makeText(this,contents,Toast.LENGTH_LONG).show();
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
最后,在清单文件中对其进行索引,使用意图过滤器使其能够识别其来源和功能
<activity android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
我正在开发一个应用程序,在这个应用程序中我必须实现 QR 码扫描器,我可以在 Zxing 库的帮助下在 activity 中轻松实现这个东西但问题是扫描器应该在fragment 和在 ViewPager 中添加的 Fragment,我还想自定义扫描仪的视图。
将此库用于 QR 码扫描器,它是 ZXING 扫描器项目的修改版,可轻松检测 Android QR 码。QR Code Scanner
对于 Android 工作室用户
repositories {
maven {
url "https://jitpack.io"
}
}
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
首先,您需要通过打开相机(扫描器)来触发一个 Intent。
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
然后,如果在一个Fragment中被触发,那么写,否则你的请求代码会出错。
getActivity().startActivityForResult(intent, 0);
如果来自 Activity
startActivityForResult(intent, 0);
那么,它必须是一个 Activity 你需要扫描仪捕获结果的地方,我已经捕获并因此显示在 Toast 中。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Toast.makeText(this,contents,Toast.LENGTH_LONG).show();
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
最后,在清单文件中对其进行索引,使用意图过滤器使其能够识别其来源和功能
<activity android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>