我想将QRCode添加到我的Android应用程序中。
我使用的是Android Studio 8.1。
我从maven存储库(http://repo1.maven.org/maven2/com/google/zxing/core/3.1.0/)
下载zxing core.jar文件我在清单xml文件中添加了以下行:
<uses-permission android:name="android.permission.CAMERA" />
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape" >
</activity>
然后我将jar文件添加到“lib”文件夹中,并在gradle构建文件中添加为Library:
编译文件('libs / core-3.1.0.jar')
我创建了以下活动:
public class QrCodeReader extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcode);
HandleClick hc = new HandleClick();
findViewById(R.id.butQR).setOnClickListener(hc);
findViewById(R.id.butProd).setOnClickListener(hc);
findViewById(R.id.butOther).setOnClickListener(hc);
}
private class HandleClick implements View.OnClickListener {
public void onClick(View arg0) {
Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
intent.setAction("com.google.zxing.client.android.SCAN");
intent.putExtra("SAVE_HISTORY", false);
startActivityForResult(intent, 0);
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
TextView tvStatus=(TextView)findViewById(R.id.tvStatus);
TextView tvResult=(TextView)findViewById(R.id.tvResult);
if (resultCode == RESULT_OK) {
tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
tvResult.setText(intent.getStringExtra("SCAN_RESULT"));
} else if (resultCode == RESULT_CANCELED) {
tvStatus.setText("Press a button to start a scan.");
tvResult.setText("Scan cancelled.");
}
}
}
}
现在我得到“无法解决符号CaptureActivity”错误,我该如何解决这个问题?
此致
编辑:
我添加了以下文件并修复了此错误
编译文件('libs / android-core-3.1.0.jar') 编译文件('libs / android-integration-3.1.0.jar')
但我收到以下错误:
java.lang.ClassNotFoundException:未找到类“com.google.zxing.client.android.CaptureActivity”如何解决此问题?
答案 0 :(得分:1)
您无意在应用程序中使用CaptureActivity
。由于这个原因,它不在core
,这就是您的应用无法找到它的原因。
您的代码令人困惑,因为您似乎希望按Intent
进行集成,但是,您不需要android
甚至core
中的任何代码。相反,您应该按照https://github.com/zxing/zxing/wiki/Scanning-Via-Intent
答案 1 :(得分:0)
在捕获活动中添加intent过滤器。
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
答案 2 :(得分:0)
您遇到此错误的原因只有三个:
这堂课真的不存在。如果您使用的是官方示例中的代码并获得此代码,请确保您拥有该库的最新版本
您尚未将jar添加到构建路径中。要解决此问题,请右键单击Eclipse中的jar,然后执行BuildPath►Addto Build Path。
您的jar不在/ libs文件夹中。将jar添加到构建路径时会发生这种情况,但较新版本的ADT需要将它放在/ libs中。把它放在那里并重新添加到构建路径。
答案 3 :(得分:-1)
一旦参考此链接 http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/
在AndroidManifest.xml中添加
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>