Jig*_*ekh 51 android android-camera flashlight
我目前正致力于手电筒开/关.我收到此错误java.lang.RuntimeException: Fail to connect to camera service我不知道为什么会发生此错误.我提到了许多解决方案,但我的问题仍未解决.当手电筒打开时,不会发生错误,但是当手电筒关闭时则会发生错误.
我的代码主要代码.
我的清单许可:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
Run Code Online (Sandbox Code Playgroud)
sam*_*sam 91
我有同样的问题,这里的答案都没有解决,所以在解决之后我就加入了解决问题的方法.这适用于支持每个应用程序设置权限的新Android版本(自Marshmallow,6.0以来).可以禁用相机权限,应从应用程序设置启用.设置 - >应用程序 - > [您的应用程序] - >权限
有关这方面的更多信息:http://developer.android.com/training/permissions/requesting.html
Jim*_*eas 25
我也看到了这个错误:
java.lang.RuntimeException:无法连接到摄像头服务
在尝试手电筒应用程序时.事实证明,我对我的权限有点草率,并将它们复制到manifest.xml文件中的应用程序块的主体中.因此,您真的需要遵守以下文档中所述的语法:
http://developer.android.com/guide/topics/manifest/manifest-element.html
否则,应用程序将失败,并且Camera.open()调用上的服务连接失败.它应该基于您在问题中的权限看起来像这样:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<application
Run Code Online (Sandbox Code Playgroud)
确保您的权限和功能列表仅包含在清单部分中,而不是隐藏在应用程序部分中!
Jay*_*yas 15
试试这个...
static Camera camera = null;
Run Code Online (Sandbox Code Playgroud)
宣布它在顶部.
try{
if(clickOn == true) {
clickOn = false;
camera = Camera.open();
Parameters parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();
remoteViews.setViewVisibility(R.id.button1, View.GONE);
remoteViews.setViewVisibility(R.id.button2, View.VISIBLE);
localAppWidgetManager.updateAppWidget(componentName, remoteViews);
} else {
clickOn = true;
camera.stopPreview();
camera.release();
camera = null;
remoteViews.setViewVisibility(R.id.button1, View.VISIBLE);
remoteViews.setViewVisibility(R.id.button2, View.GONE);
localAppWidgetManager.updateAppWidget(componentName, remoteViews);
}
} catch(Exception e) {
Log.e("Error", ""+e);
}
Run Code Online (Sandbox Code Playgroud)
0xA*_*iHn 13
如果您没有为您的应用启用相机权限,则可能会在Android 6.0中出现此问题.从Android 6.0开始,您可以处理您将提供的应用程序权限天气,或者不处理应用程序的特定权限.
因此,settings->apps->your_app->enable camera permission如果尚未启用权限,则需要启用权限.
如果你的操作系统版本是6.0或更高版本试试这个,希望这会有所帮助.
public class RequestUserPermission {
private Activity activity;
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
public RequestUserPermission(Activity activity) {
this.activity = activity;
}
public void verifyStoragePermissions() {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
}
**//CALL FROM YOUR ACTIVITY**
RequestUserPermission requestUserPermission = new RequestUserPermission(this);
requestUserPermission.verifyStoragePermissions();
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您尝试使用不存在的cameraID打开相机,您将收到相同的错误(java.lang.RuntimeException:无法连接到相机服务)
看看你的代码在这个块
camera.setParameters(parameters);
camera.stopPreview();
camera.release();
camera = null;
Run Code Online (Sandbox Code Playgroud)
调用release()以释放相机以供其他应用程序使用。应用程序应立即释放相机onPause()(并在以下位置重新打开())onResume().
在上面的代码中,发布后立即将 null 放入相机