android: kamera.getParameters () zawiesza aplikację

Używam tego kodu, aby użyć diody LED aparatu jako latarki, ale ulega awarii podczas uruchamiania usługi. Za pomocą instrukcji Log.w () znalazłem, że zatrzymuje się na param = camera.getParameters () ;. umieściłem android.permission.CAMERA w moim manifeście. nie rozumiem, co powoduje awarię. jak mogę to naprawić?

    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<String> 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;
    }
}

to jest 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

w końcu odkryłem to po wielu próbnych błędach zakończenia. Wysyłam poprawny kod do uzyskania parametrów, dla innych użytkowników z tym problemem

     camera = Camera.open();
     Camera.Parameters param = camera.getParameters();

questionAnswers(2)

yourAnswerToTheQuestion