Android 尝试在空对象引用上调用虚拟方法

Android 尝试在空对象引用上调用虚拟方法,android,Android,公共类MainActivity扩展活动{ 私有文本视图电池级; 私人摄像机; 私人摄像机。参数; 专用图像按钮btn_电源; 布尔值isFlashLightOn=false; MediaPlayer mp; 语境; 私人顾问马德维尤; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdView=(AdV

公共类MainActivity扩展活动{
私有文本视图电池级;
私人摄像机;
私人摄像机。参数;
专用图像按钮btn_电源;
布尔值isFlashLightOn=false;
MediaPlayer mp;
语境;
私人顾问马德维尤;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdView=(AdView)findviewbyd(R.id.ad_视图);
AdRequest AdRequest=新建AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE\u ID\u仿真器)
.build();
mAdView.loadAd(adRequest);
btn_功率=(图像按钮)findViewById(R.id.btn_功率);
btn_power.setOnClickListener(新的FlashOnOffListener());
batterylevel=(TextView)this.findViewById(R.id.batterylevel);
Typeface=Typeface.createFromAsset(getAssets(),“font/Advantage-Demi-delivery.ttf”);
电池级设置字体(面);
getbatterypercentage();
/*如果(isFlashSupported()){
camera=camera.open();
parameters=camera.getParameters();
}
否则{
showNoFlashAlert();
}*/
试一试{
onDestroy();
如果(isFlashSupported()){
camera=camera.open();
parameters=camera.getParameters();
}
否则{
showNoFlashAlert();
}
}捕获(例外e){
Log.e(getString(R.string.app_name),“无法打开摄像头”);
e、 printStackTrace();
}
}
@凌驾
受保护的空onDestroy(){
如果(照相机!=null){
camera.stopPreview();
camera.setPreviewCallback(空);
相机。释放();
设置参数(参数);
摄像机=零;
}
super.ondestory();
}
私有类FlashOnOffListener实现View.OnClickListener{
@凌驾
公共void onClick(视图v){
如果(iFlashlighton){
btn\u电源。设置图像资源(R.可拖动。手电筒按钮\u关闭);
parameters.setFlashMode(parameters.FLASH_MODE_OFF);
设置参数(参数);
camera.stopPreview();
isFlashLightOn=false;
播放声音();
}否则{
btn_电源。设置图像资源(R.可拖动。手电筒按钮打开);
parameters.setFlashMode(摄像机、参数、闪光灯模式);
设置参数(参数);
camera.startPreview();
isFlashLightOn=true;
播放声音();
}
}
}
私有void showNoFlashAlert(){
新建AlertDialog.Builder(此)
.setMessage(“您的设备硬件不支持手电筒!”)
.setIcon(android.R.drawable.ic_对话框_警报).setTitle(“错误”)
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
完成();
}
}).show();
}
支持私有布尔值(){
PackageManager pm=getPackageManager();
返回pm.hasSystemFeature(PackageManager.FEATURE\u CAMERA\u FLASH);
}
ilter batteryLevelFilter=新的意图过滤器(意图、行动和电池改变);
寄存器接收器(电池级接收器、电池级过滤器);
}
//@覆盖
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
}
公共类MainActivity扩展活动{
私有文本视图电池级;
私人摄像机;
私人摄像机。参数;
专用图像按钮btn_电源;
布尔值isFlashLightOn=false;
MediaPlayer mp;
语境;
私人顾问马德维尤;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdView=(AdView)findviewbyd(R.id.ad_视图);
AdRequest AdRequest=新建AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE\u ID\u仿真器)
.build();
mAdView.loadAd(adRequest);
btn_功率=(图像按钮)findViewById(R.id.btn_功率);
btn_power.setOnClickListener(新的FlashOnOffListener());
batterylevel=(TextView)this.findViewById(R.id.batterylevel);
  04-05 04:02:50.197 11202-11202/com.Salman.apple.flashlight E/FlashLight: failed to open Camera
04-05 04:02:52.041 11202-11564/com.Salman.apple.flashlight E/libEGL: validate_display:255 error 3008 (EGL_BAD_DISPLAY)
04-05 04:02:58.974 11202-11202/com.Salman.apple.flashlight E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.Salman.apple.flashlight, PID: 11202
                                                                             java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.startPreview()' on a null object reference
                                                                                 at com.Salman.apple.flashlight.MainActivity$FlashOnOffListener.onClick(MainActivity.java:115)
                                                                                 at android.view.View.performClick(View.java:5204)
                                                                                 at android.view.View$PerformClick.run(View.java:21153)
                                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:148)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)