android camera.getparameters,android:camera.getParameters()使应用程序崩溃

我正在使用此代码将相机LED用作手电筒,但在服务启动时崩溃.我使用Log.w()语句发现它停在param = camera.getParameters();.我在清单中包含了android.permission.CAMERA.我不明白是什么原因导致飞机坠毁.我怎样才能解决这个问题?

public class Flashlight extends Service {

private Camera camera;

private Parameters param;

private final IBinder mBinder = new LocalBinder();

public class LocalBinder extends Binder {

Flashlight getService() {

return Flashlight.this;

}

}

public int onStartCommand(Intent intent, int flags, int startId) {

Log.w("1","camera.open");

Camera.open();

Log.w("1","camera.getParameters");

param = camera.getParameters();

Log.w("1","i got camera parameters");

List pList = camera.getParameters().getSupportedFlashModes();

if(pList.contains(Parameters.FLASH_MODE_TORCH)){

param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

}

else if(pList.contains(Parameters.FLASH_MODE_ON)){

param.setFlashMode(Camera.Parameters.FLASH_MODE_ON);

}

param.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);

try{

camera.setParameters(param);

camera.startPreview();

}

catch (Exception e){

Toast.makeText(getApplicationContext(), "Your device does not have flash light support", Toast.LENGTH_SHORT).show();

}

return START_STICKY;

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

Parameters p=camera.getParameters();

p.setFlashMode(Parameters.FLASH_MODE_OFF);

camera.setParameters(p);

camera.stopPreview();

camera.release();

}

@Override

public IBinder onBind(Intent intent) {

return mBinder;

}

}

这是LogCcat

12-15 15:44:32.037: W/1(26304): camera.open

12-15 15:44:32.347: W/1(26304): camera.getParameters

12-15 15:44:32.347: D/AndroidRuntime(26304): Shutting down VM

12-15 15:44:32.347: W/dalvikvm(26304): threadid=1: thread exiting with uncaught exception (group=0x40a9e228)

12-15 15:44:32.357: E/AndroidRuntime(26304): FATAL EXCEPTION: main

12-15 15:44:32.357: E/AndroidRuntime(26304): java.lang.RuntimeException: Unable to start service com.bill.deuterh.Flashlight@40dd0978 with Intent { cmp=com.bill.deuterh/.Flashlight }: java.lang.NullPointerException

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2738)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.app.ActivityThread.access$1900(ActivityThread.java:139)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1334)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.os.Handler.dispatchMessage(Handler.java:99)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.os.Looper.loop(Looper.java:154)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.app.ActivityThread.main(ActivityThread.java:4945)

12-15 15:44:32.357: E/AndroidRuntime(26304): at java.lang.reflect.Method.invokeNative(Native Method)

12-15 15:44:32.357: E/AndroidRuntime(26304): at java.lang.reflect.Method.invoke(Method.java:511)

12-15 15:44:32.357: E/AndroidRuntime(26304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)

12-15 15:44:32.357: E/AndroidRuntime(26304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)

12-15 15:44:32.357: E/AndroidRuntime(26304): at dalvik.system.NativeStart.main(Native Method)

12-15 15:44:32.357: E/AndroidRuntime(26304): Caused by: java.lang.NullPointerException

12-15 15:44:32.357: E/AndroidRuntime(26304): at com.bill.deuterh.Flashlight.onStartCommand(Flashlight.java:32)

12-15 15:44:32.357: E/AndroidRuntime(26304): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2715)

12-15 15:44:32.357: E/AndroidRuntime(26304): ... 10 more

经过大量试用结束错误后,我终于弄清楚了.对于其他有此问题的用户,我发布了用于获取参数的正确代码

camera = Camera.open();

Camera.Parameters param = camera.getParameters();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值