林制作一个应用程序对于打开/关闭LED在手机的我能理解什么即时做错了,我得到这个错误释放后调用的方法()相机错误?
E/AndroidRuntime: FATAL EXCEPTION: Thread-42530
java.lang.RuntimeException: Method called after release()
at android.hardware.Camera.startPreview(Native Method)
at com.mashi.flashlight.FlashLightCallingService.flashOn(FlashLightCallingService.java:104)
at com.mashi.flashlight.FlashLightCallingService$1.run(FlashLightCallingService.java:45)
at java.lang.Thread.run(Thread.java:856)
我的代码是
public class FlashLightCallingService extends Service {
Boolean hasFlash;
Boolean isFlashOn=true ;
Camera camera;
Camera.Parameters parameters;
@Override
public void onCreate() {
hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
getCamera();
if (hasFlash)
{
new Thread(new Runnable(){
public void run() {
// TODO Auto-generated method stub
while(isFlashOn)
{
flashOn();
//flashOff();
}
}
}).start();
}
else
{
System.exit(1);
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
isFlashOn=false;
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
public void getCamera(){
if (camera==null)
{
try {
camera=Camera.open();
parameters=camera.getParameters();
}catch (Exception e)
{
e.printStackTrace();
}
}
}
public void flashOn(){
parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();
}
public void flashOff(){
parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.stopPreview();
}
}
抱歉语言但英语不是我的语言
我已经做只是使用ansynctask和更良好或与此代码就在我设置isFlashOn =假做线程。睡觉(250)和其他东西在if循环中获得threade如果(isFlashOn)我已经完成了这个工作并且对我有效,也许有人像我一样有相同的问题 –