Android 拍照(摄像头$ShutterCallback、摄像头$PictureCallback、摄像头$PictureCallback)和#x27;关于空对象引用
我看了很多关于堆栈溢出的问题和答案,但我找不到我的问题解决方案。 我尝试直接从相机中获取捕获的图像,并将其交给我的背景任务进行编辑,然后保存到原始位置 我的代码是:Android 拍照(摄像头$ShutterCallback、摄像头$PictureCallback、摄像头$PictureCallback)和#x27;关于空对象引用,android,android-camera,android-broadcastreceiver,android-camera2,Android,Android Camera,Android Broadcastreceiver,Android Camera2,我看了很多关于堆栈溢出的问题和答案,但我找不到我的问题解决方案。 我尝试直接从相机中获取捕获的图像,并将其交给我的背景任务进行编辑,然后保存到原始位置 我的代码是: manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); String action = intent.getAction(); final Handler handler = new Handler();
manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
String action = intent.getAction();
final Handler handler = new Handler();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
manager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
@Override
public void onCameraAvailable(String cameraId) {
super.onCameraAvailable(cameraId);
}
@Override
public void onCameraUnavailable(String cameraId) {
super.onCameraUnavailable(cameraId);
//Do your work
camera.takePicture(myShutterCallback,
myPictureCallback_RAW, myPictureCallback_JPG);
myShutterCallback = new Camera.ShutterCallback(){
@Override
public void onShutter() {
// TODO Auto-generated method stub
Toast.makeText(context, "Shutter Clicked", Toast.LENGTH_SHORT).show();
}};
myPictureCallback_RAW = new Camera.PictureCallback(){
@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
Toast.makeText(context, "Raw Callback", Toast.LENGTH_SHORT).show();
}};
myPictureCallback_JPG = new Camera.PictureCallback(){
@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
Toast.makeText(context, "Image Captured", Toast.LENGTH_SHORT).show();
Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length);
}};
Toast.makeText(context, "Available Camera", Toast.LENGTH_SHORT).show();
}
},handler);
}
在onStartCommand方法中更改返回值START\u STICKY
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Start", Toast.LENGTH_SHORT).show();
receiver = new CameraEventReceiverr();
iFilter = new IntentFilter(Intent.ACTION_POWER_CONNECTED);
iFilter.addAction(Intent.ACTION_CAMERA_BUTTON);
iFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(receiver, iFilter);
return START_STICKY;
}
发布您的服务代码OK-@GautamSuranistill这次不工作,在打开摄像头之前我关闭我的应用程序,然后在没有响应时卸下充电器,然后我重新打开应用程序,然后启动服务。