Java android摄像头函数getcameraIdlist()函数不返回任何内容 该代码生成一个IllegalArguementException 即使清单中给出了所有权限,列表似乎也没有填充
只要打开Java android摄像头函数getcameraIdlist()函数不返回任何内容 该代码生成一个IllegalArguementException 即使清单中给出了所有权限,列表似乎也没有填充,java,android,android-camera,android-permissions,Java,Android,Android Camera,Android Permissions,只要打开活动,应用程序就会崩溃 公开课合影推广活动{ 私人经理人; 公共摄像机; 专用CameraDevice.StateCallback public void setCallback(CameraDevice.StateCallback callback) { this.mcallback = callback; } public void setHandler(Handler handler) { this.mhandler = handler; } int coun
活动
,应用程序就会崩溃
公开课合影推广活动{
私人经理人;
公共摄像机;
专用CameraDevice.StateCallback
public void setCallback(CameraDevice.StateCallback callback) {
this.mcallback = callback;
}
public void setHandler(Handler handler) {
this.mhandler = handler;
}
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_photo);
String[] list=new String[10];
CameraManager camera = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
setCallback(mcallback);
setHandler(mhandler);
ListView cami = (ListView) findViewById(R.id.lv);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.main_photo, R.id.textView2, list);
cami.setAdapter(adapter);
try
{
list = camera.getCameraIdList();
count++;
} catch (CameraAccessException e)
{
e.printStackTrace();
}
try
{
camera.openCamera(list[0], mcallback, mhandler);
mcallback.onOpened(cam);
} catch (CameraAccessException e)
{
e.printStackTrace();
Log.d("Photo", "Error in opening camera");
} catch (IllegalArgumentException a)
{
Log.d("Callback", "Callback Problem");
}
}
public void setCallback(CameraDevice.StateCallback){
this.mcallback=回调;
}
公共void setHandler(处理程序){
this.mhandler=handler;
}
整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局图、主照片);
字符串[]列表=新字符串[10];
CameraManager camera=(CameraManager)getSystemService(Context.camera_服务);
setCallback(mcallback);
setHandler(mhandler);
ListView cami=(ListView)findViewById(R.id.lv);
ArrayAdapter=新的ArrayAdapter(这个,R.layout.main_photo,R.id.textView2,列表);
凸轮设置适配器(适配器);
尝试
{
list=camera.getCameraIdList();
计数++;
}捕获(CameraAccessE异常)
{
e、 printStackTrace();
}
尝试
{
camera.openCamera(列表[0],mcallback,mhandler);
mcallback.onOpened(cam);
}捕获(CameraAccessE异常)
{
e、 printStackTrace();
日志d(“照片”,“打开相机时出错”);
}捕获(IllegalArgumentException a)
{
Log.d(“回调”、“回调问题”);
}
}
除非我遗漏了什么,否则据我所知,在调用
setCallback(mcallback)
和setHandler(mhandler)
之前,mhandler和mcallback都是空的。在调用camera.openCamera(列表[0],mcallback,mhandler)
之前,请尝试验证这两个变量
作为旁注,数组
String[]list=new String[10]
从未使用过,您的变量将在7行之后重新分配。也许可以改为使用String[]list;
然后在7行之后,使用list=camera.getCameraIdList();
或者干脆使用String[]list=camera.getCameraIdList();
哪个调用产生上述异常?