2012-02-07 14 views
0

私のアンドロイドの活動は、不規則な時間に終了します。 LEDトーチをオンにするだけです。 logcatのエラーは次のとおりです。Androidのアクティビティ強制が不規則な時間に終了しますか?

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 

ここは私の活動です。他のクラスはありません。

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

どうしたのですか?

+2

ハードウェア障害の可能性があります...異なるデバイスやエミュレータで試しましたか? – m0skit0

+0

マニフェストには何がありますか? – hopia

+0

マニフェスト:http://pastebin.com/r4v7MaNg – t3hcakeman

答えて

1

カメラサービス接続をフィールドに保存しないでください。代わりに、サービスを利用しようとしているときに電話をかけ、完了したら解放してください。

+0

すべてのリターンステートメントの前にリリースされていますか? – t3hcakeman

+0

よく、トーチがオフになったときのすべてのもの? – t3hcakeman

+0

はい。つまり、サービスの使用が終了したら解放します。 –

関連する問題