Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android activity force不定时关闭?_Java_Android_Exception - Fatal编程技术网

Java Android activity force不定时关闭?

Java Android activity force不定时关闭?,java,android,exception,Java,Android,Exception,我的android activity force不定期关闭。它所要做的就是打开LED手电筒。以下是来自logcat的错误: D/CameraService( 70): CameraService::connect E (pid 4598, id 0) I/CameraService( 70): cameraId:0 I/CameraService( 70): 2D mode only W/CameraService( 70): CameraService::connect X (

我的android activity force不定期关闭。它所要做的就是打开LED手电筒。以下是来自logcat的错误:

D/CameraService(   70): CameraService::connect E (pid 4598, id 0)
I/CameraService(   70): cameraId:0
I/CameraService(   70): 2D mode only
W/CameraService(   70): CameraService::connect X (pid 4598) rejected (existing client).
D/AndroidRuntime( 4598): Shutting down VM
W/dalvikvm( 4598): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
E/AndroidRuntime( 4598): FATAL EXCEPTION: main
E/AndroidRuntime( 4598): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cakemansapps.lightwriter/com.cakemansapps.lightwriter.LightWriter}: java.lang.RuntimeException: Fail to connect to camera service
E/AndroidRuntime( 4598):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)
E/AndroidRuntime( 4598):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
E/AndroidRuntime( 4598):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3288)
E/AndroidRuntime( 4598):    at android.app.ActivityThread.access$1600(ActivityThread.java:132)
E/AndroidRuntime( 4598):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1042)
E/AndroidRuntime( 4598):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 4598):    at android.os.Looper.loop(Looper.java:143)
E/AndroidRuntime( 4598):    at android.app.ActivityThread.main(ActivityThread.java:4263)
E/AndroidRuntime( 4598):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 4598):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 4598):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 4598):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 4598):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 4598): Caused by: java.lang.RuntimeException: Fail to connect to camera service
E/AndroidRuntime( 4598):    at android.hardware.Camera.native_setup(Native Method)
E/AndroidRuntime( 4598):    at android.hardware.Camera.<init>(Camera.java:265)
E/AndroidRuntime( 4598):    at android.hardware.Camera.open(Camera.java:241)
E/AndroidRuntime( 4598):    at com.cakemansapps.lightwriter.LightWriter.onCreate(LightWriter.java:21)
E/AndroidRuntime( 4598):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
E/AndroidRuntime( 4598):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
E/AndroidRuntime( 4598):    ... 12 more
W/ActivityManager(  123):   Force finishing activity com.cakemansapps.lightwriter/.LightWriter
V/AgentService_J(30842): Action[1520]:com.htc.android.iqagent.action.ui03
I/HTC_SUBMITTER_C(30842): (-3) submitUI03:0,22,0,java.lang.RuntimeException: Fail to connect to camera service
V/AgentService_J(30842): (-3)ErrorCode:0,AppType:22,Level:0,Message:java.lang.RuntimeException: Fail to connect to camera service

我做错了什么?

不要将摄像头服务连接保存在字段中。取而代之的是,在您即将使用该服务时调用open,完成后调用release

看起来可能是硬件故障。。。您是否在不同的设备和/或模拟器上尝试过它?清单中有什么?清单:所以在所有返回语句之前释放?好的,当它导致火炬熄灭时,所有返回语句都释放?是的。或者换言之,当你使用完该服务后释放。就安卓而言,你要打两次connect。您没有有效地管理与该服务的连接。您不可能做到正确。您是否仍在字段中保持连接?
package com.cakemansapps.lightwriter;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.view.KeyEvent;

public class LightWriter extends Activity implements OnTouchListener {
   private static final String TAG = "Touch" ;
   private Camera mCamera;
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
      mCamera = Camera.open();
   }

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_DOWN) {
                Log.w("LightWriter", "Down");
                setFlashlight(true);
            }
            else if (action == KeyEvent.ACTION_UP) {
                Log.w("LightWriter", "Up");
                setFlashlight(false);
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }
/***
 * Attempts to set camera flash torch/flashlight mode on/off
 * @param isOn true = on, false = off
 * @return boolean whether or not we were able to set it
 */

public boolean setFlashlight(boolean isOn)
{
    if (mCamera == null)
    {
        return false;
    }
    Camera.Parameters params = mCamera.getParameters();
    String value;
    if (isOn) // we are being ask to turn it on
    {
        value = Camera.Parameters.FLASH_MODE_TORCH;
    }
    else  // we are being asked to turn it off
    {
        value =  Camera.Parameters.FLASH_MODE_OFF;
    }

    try{    
        params.setFlashMode(value);
        mCamera.setParameters(params);

        String nowMode = mCamera.getParameters().getFlashMode();

        if (isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH))
        {
            return true;
        }
        if (! isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO))
        {
            return true;
        }
        return false;
    }
    catch (Exception ex)
    {
    }
    return false;
}
    public boolean onTouch(View view, MotionEvent me) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
@Override
public void onBackPressed() {
    mCamera.release();
    this.finish();
    return;
   }
}