2012-08-25 34 views
0

我是android开发中的绝对begginer,并且我想要开启/关闭应用程序,但是出现错误。所以请帮助我。不幸的是,应用程序在仿真器中运行时被阻止了

package com.vikram.flashcamera; 

import android.app.Activity; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 
    private boolean isLighOn = false; 
    private Camera camera; 
    private Button button; 

    @Override 
    protected void onStop() { 
     super.onStop(); 

     if(camera != null) { 
      camera.release(); 
     } 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button) findViewById(R.id.buttonClick); 

     Context context = this; 
     PackageManager pm = context.getPackageManager(); 

     if(!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
      Log.e("err", "Device has no camera!"); 
      return; 
     } 

     camera = Camera.open(); 
     final Parameters p = camera.getParameters(); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       if(isLighOn) { 
        Log.i("info", "torch is turn off!"); 
        p.setFlashMode(Parameters.FLASH_MODE_OFF); 
        camera.setParameters(p); 
        camera.stopPreview(); 
        isLighOn = false; 
       } 
       else { 
        Log.i("info", "torch is turn on!"); 
        p.setFlashMode(Parameters.FLASH_MODE_TORCH); 

        camera.setParameters(p); 
        camera.startPreview(); 
        isLighOn = true; 
       } 
      } 
     }); 
    } 
} 

和我的logCat错误如下。

08-25 15:50:41.932: E/Trace(878): error opening trace file: No such file or directory (2) 
    08- 5 15:50:42.453: D/AndroidRuntime(878): Shutting down VM 
    08-25 15:50:42.463: W/dalvikvm(878): threadid=1: thread exiting with uncaught exception  (group=0x40a13300) 
    08-25 15:50:42.473: E/AndroidRuntime(878): FATAL EXCEPTION: main 
    08-25 15:50:42.473: E/AndroidRuntime(878): java.lang.RuntimeException: Unable to start  activity   ComponentInfo{com.vikram.flashcamera/com.vikram.flashcamera.MainActivity}:  java.lang.NullPointerException 
    08-25 15:50:42.473: E/AndroidRuntime(878): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
08-25 15:50:42.473: E/AndroidRuntime(878): at   android.app.ActivityThread.access$600(ActivityThread.java:130) 
08-25 15:50:42.473: E/AndroidRuntime(878): at   android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.os.Handler.dispatchMessage(Handler.java:99) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.os.Looper.loop(Looper.java:137) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.app.ActivityThread.main(ActivityThread.java:4745) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at java.lang.reflect.Method.invokeNative(Native Method) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at java.lang.reflect.Method.invoke(Method.java:511) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at dalvik.system.NativeStart.main(Native Method) 
    08-25 15:50:42.473: E/AndroidRuntime(878): Caused by: java.lang.NullPointerException 
    08-25 15:50:42.473: E/AndroidRuntime(878): at com.vikram.flashcamera.MainActivity.onCreate(MainActivity.java:44) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.app.Activity.performCreate(Activity.java:5008) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
    08-25 15:50:42.473: E/AndroidRuntime(878): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
    08-25 15:50:42.473: E/AndroidRuntime(878): ... 11 more 
    08-25 18:03:08.543: E/Trace(900): error opening trace file: No such file or directory (2) 
    08-25 18:03:09.122: D/AndroidRuntime(900): Shutting down VM 
    08-25 18:03:09.122: W/dalvikvm(900): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
    08-25 18:03:09.132: E/AndroidRuntime(900): FATAL EXCEPTION: main 
    08-25 18:03:09.132: E/AndroidRuntime(900): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vikram.flashcamera/com.vikram.flashcamera.MainActivity}:  java.lang.NullPointerException 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.os.Handler.dispatchMessage(Handler.java:99) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.os.Looper.loop(Looper.java:137) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread.main(ActivityThread.java:4745) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at java.lang.reflect.Method.invokeNative(Native Method) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at java.lang.reflect.Method.invoke(Method.java:511) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at dalvik.system.NativeStart.main(Native Method) 
    08-25 18:03:09.132: E/AndroidRuntime(900): Caused by: java.lang.NullPointerException 
    08-25 18:03:09.132: E/AndroidRuntime(900): at com.vikram.flashcamera.MainActivity.onCreate(MainActivity.java:44) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.Activity.performCreate(Activity.java:5008) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
    08-25 18:03:09.132: E/AndroidRuntime(900): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
    08-25 18:03:09.132: E/AndroidRuntime(900): ... 11 more 
    08-25 18:03:11.613: I/Process(900): Sending signal. PID: 900 SIG: 9 
    08-25 18:33:52.222: E/Trace(929): error opening trace file: No such file or directory (2) 
    08-25 18:33:52.813: D/AndroidRuntime(929): Shutting down VM 
    08-25 18:33:52.813: W/dalvikvm(929): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
    08-25 18:33:52.833: E/AndroidRuntime(929): FATAL EXCEPTION: main 
    08-25 18:33:52.833: E/AndroidRuntime(929): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vikram.flashcamera/com.vikram.flashcamera.MainActivity}: java.lang.NullPointerException 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.os.Handler.dispatchMessage(Handler.java:99) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.os.Looper.loop(Looper.java:137) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread.main(ActivityThread.java:4745) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at java.lang.reflect.Method.invokeNative(Native Method) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at java.lang.reflect.Method.invoke(Method.java:511) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at dalvik.system.NativeStart.main(Native Method) 
    08-25 18:33:52.833: E/AndroidRuntime(929): Caused by: java.lang.NullPointerException 
    08-25 18:33:52.833: E/AndroidRuntime(929): at com.vikram.flashcamera.MainActivity.onCreate(MainActivity.java:44) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.Activity.performCreate(Activity.java:5008) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
    08-25 18:33:52.833: E/AndroidRuntime(929): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
    08-25 18:33:52.833: E/AndroidRuntime(929): ... 11 more 
    08-25 18:38:52.904: I/Process(929): Sending signal. PID: 929 SIG: 9 
+0

尝试点击,或在你的'活动'中查看第44行。这是发生异常的地方。 – Trevor

+0

你错过了相机的权限吗?我认为相机是空的 – nandeesh

+0

没有显示任何错误行号。 MainActivity.java的第44行 –

回答

1

由于您的AVD没有得到相机,我认为这可以帮助你:就行`com.vikram.flashcamera.MainActivity.onCreate(MainActivity.java:44) ` Enable Camera in AVD

0

您的错误跟踪显示异常发生在您的Activity的第44行。从您发布的代码的行数开始,这似乎是Camera.open()。根据文档,如果设备没有后置摄像头,则返回null。这可能是有道理的,如果它在模拟器上。

+0

它实际上是我计算的以下行。返回'null'的调用不会直接导致NPE - 只有当您尝试使用'null'引用时 - 在这种情况下才会获取相机参数。 – Squonk

+0

我会做什么然后 –

+0

@vikramraj:在AVD管理器的硬件设置中添加一个模拟摄像头。 – Squonk

相关问题