我通过将前置摄像头设置为AVD Manager中的"webcam0"将网络摄像头连接到我的仿真器.当我启动模拟器的相机应用程序时,我收到错误
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Run Code Online (Sandbox Code Playgroud)
这是Android源代码的相关部分:
sp<ICamera> CameraService::connect(
const sp<ICameraClient>& cameraClient, int cameraId) {
int callingPid = getCallingPid();
[...]
if (cameraId < 0 || cameraId >= mNumberOfCameras) {
LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).",
callingPid, cameraId);
return NULL;
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
网络摄像头已正确分配ID为0,因为只有1个摄像头.但是,mNumberOfCameras大概仍为0.这意味着摄像机正在由仿真器注册,但它并没有费心去更新连接的摄像机的数量.
如何连接网络摄像头以便模拟器正确识别?
编辑:命令emulator -webcam-list -avd <name of your AVD>in \android-sdks\tools给出结果:
List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel …Run Code Online (Sandbox Code Playgroud) 我正试图通过手机访问相机.我在将代码放入窗口小部件之前编写了一个简单的存根应用程序.我没有走得太远.代码总是抛出一个运行时异常"无法连接到摄像头服务"代码(从commonsware示例中收集)出错了:
@Override
public void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
Camera.CameraInfo info = new Camera.CameraInfo();
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, info);
if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
try {
// Gets to here OK
camera = Camera.open(i);
} catch (Exception e) {
e.printStackTrace();
// throws runtime exception :"Failed to connect to camera service"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的证明是(10月20日更正):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nbt.cameratest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" /> …Run Code Online (Sandbox Code Playgroud) 据我所知,Android模拟器没有相机.要捕获实时图像,我们必须使用网络摄像头.我在这个网站上看到代码使用android模拟器中的网络摄像头来捕获图像,但我不知道如何使用这段代码.