Android M QR读取错误..打开相机时出错
Android M QRread error.. Error at opening camera
我关注this阅读二维码..
在这里,我已经将它集成到我的应用程序中,几天以来它运行良好..
它在 android 2 到 5.1 版本上工作正常
直到 Api 22 它正常工作....
但现在 android 6
Api 23 个或更多....
我收到这个错误..
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.<init>(Camera.java:511)
at android.hardware.Camera.open(Camera.java:353)
at com.google.zxing.client.android.camera.open.GingerbreadOpenCameraInterface.open(GingerbreadOpenCameraInterface.java:57)
at com.google.zxing.client.android.camera.open.CameraManager.openDriver(CameraManager.java:77)
at com.my.qr.sdata.QRCodeReaderView.surfaceCreated(QRCodeReaderView.java:82)
at android.view.SurfaceView.updateWindow(SurfaceView.java:582)
at android.view.SurfaceView.onPreDraw(SurfaceView.java:177)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
任何人都可以在 android 6 帮助我吗...这在 android 5 和 5.1 以及 android 2.3.3 中也工作正常..
更新
现在我知道我需要在 android 6 或更高版本中添加权限..
任何人都可以建议我应该在哪里添加或更改上面错误的代码..
this是我的代表码
请向我推荐 android 6 和新版本中等待 android 权限的大多数用户...
检查你的 sdk 版本,如果它是 23,那么你必须获得权限运行时间
您需要检查您的 API LEVEL >= 23。如果是这种情况(如 Android 6),您必须在运行时请求访问相机的权限。清单权限将不起作用。
阅读 this 了解如何实现此功能。
try : 写入你的 gradle.build targetSdkVersion 22
查看:
< 使用权限 android:name="android.permission.CAMERA"/>
我添加了运行时间权限...
像这样:
在 运行 时间...我在创建时添加了这个...
if (CheckPermission(this, Manifest.permission.Camera)) {
YourStuffHandling();
} else {
RequestPermission(MainActivity.this, Manifest.permission.Camera, REQUEST_READ_PERMISSION );
}
在这里我的应用程序将处理..(QRcode..)
private void YourStuffHandling() {
}
并以此回应..
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
switch (permsRequestCode) {
case REQUEST_READ_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
YourStuffHandling();
} else {
ShowToast(getString(R.string.permission_needed_sms));
}
return;
}
}
}
public void RequestPermission(Activity thisActivity, String Permission, int Code) {
if (ContextCompat.checkSelfPermission(thisActivity,
Permission)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Permission)) {
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Permission},
Code);
}
}
}
public boolean CheckPermission(Context context, String Permission) {
if (ContextCompat.checkSelfPermission(context,
Permission) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
现在它对我来说工作正常,...我已经为所有其他权限添加了相同的....在运行时间...
我关注this阅读二维码..
在这里,我已经将它集成到我的应用程序中,几天以来它运行良好..
它在 android 2 到 5.1 版本上工作正常 直到 Api 22 它正常工作....
但现在 android 6 Api 23 个或更多....
我收到这个错误..
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.<init>(Camera.java:511)
at android.hardware.Camera.open(Camera.java:353)
at com.google.zxing.client.android.camera.open.GingerbreadOpenCameraInterface.open(GingerbreadOpenCameraInterface.java:57)
at com.google.zxing.client.android.camera.open.CameraManager.openDriver(CameraManager.java:77)
at com.my.qr.sdata.QRCodeReaderView.surfaceCreated(QRCodeReaderView.java:82)
at android.view.SurfaceView.updateWindow(SurfaceView.java:582)
at android.view.SurfaceView.onPreDraw(SurfaceView.java:177)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
任何人都可以在 android 6 帮助我吗...这在 android 5 和 5.1 以及 android 2.3.3 中也工作正常..
更新
现在我知道我需要在 android 6 或更高版本中添加权限..
任何人都可以建议我应该在哪里添加或更改上面错误的代码..
this是我的代表码
请向我推荐 android 6 和新版本中等待 android 权限的大多数用户...
检查你的 sdk 版本,如果它是 23,那么你必须获得权限运行时间
您需要检查您的 API LEVEL >= 23。如果是这种情况(如 Android 6),您必须在运行时请求访问相机的权限。清单权限将不起作用。
阅读 this 了解如何实现此功能。
try : 写入你的 gradle.build targetSdkVersion 22 查看: < 使用权限 android:name="android.permission.CAMERA"/>
我添加了运行时间权限...
像这样:
在 运行 时间...我在创建时添加了这个...
if (CheckPermission(this, Manifest.permission.Camera)) {
YourStuffHandling();
} else {
RequestPermission(MainActivity.this, Manifest.permission.Camera, REQUEST_READ_PERMISSION );
}
在这里我的应用程序将处理..(QRcode..)
private void YourStuffHandling() {
}
并以此回应..
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
switch (permsRequestCode) {
case REQUEST_READ_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
YourStuffHandling();
} else {
ShowToast(getString(R.string.permission_needed_sms));
}
return;
}
}
}
public void RequestPermission(Activity thisActivity, String Permission, int Code) {
if (ContextCompat.checkSelfPermission(thisActivity,
Permission)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Permission)) {
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Permission},
Code);
}
}
}
public boolean CheckPermission(Context context, String Permission) {
if (ContextCompat.checkSelfPermission(context,
Permission) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
现在它对我来说工作正常,...我已经为所有其他权限添加了相同的....在运行时间...