2017-01-07 16 views
-1

私は単純なフラッシュライトアプリを開発していますが、問題は1つだけです。トグルボタンをクリックすると点灯しますが、もう一度クリックするとアプリがクラッシュしますここにクラッシュを報告するときは、必ずクラッシュログを投稿する必要があります...トグルボタンがアンドロイドアプリをクラッシュさせている

package com.example.flashapp; 

import android.hardware.Camera; 
import android.os.Bundle; 
import android.app.*; 
import android.widget.CompoundButton; 
import android.widget.Toast; 
import android.widget.ToggleButton; 

public class MainActivity extends Activity { 

ToggleButton toggleButton; 
Camera camera; 

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

    toggleButton = (ToggleButton)findViewById(R.id.onOffFlashlight); 

    toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton,boolean checked) { 
       //ToDo something 
       camera = Camera.open(); 
       Camera.Parameters parameters = camera.getParameters(); 
       parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
       camera.setParameters(parameters); 
       camera.startPreview(); 
       Toast.makeText(getApplicationContext(), "Flash Light is ON", Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 

}

+0

を好きに変更し、再度 –

答えて

0

。しかし、この場合、私は実際にあなたがなぜCamera.open()をコールしたときにカメラを解放しないので、あなたにNPEでクラッシュすることを伝えることができます。あなたはいつでもカメラをリリースしなければなりません。何らかの理由でカメラを手に入れることができない場合(他のアプリがそれを使用している可能性があります)のコードを作成する必要があります。

また、チェックボックスは常にカメラをつかんでいます。オフにする方法はありません。オンのケースのみをコーディングします。

+0

おかげで、それを開始する前にプレビューを停止する必要が...次回は、私はその....おかげで非常に多くの男を行います – Elias

0

はおそらくこの

toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton,boolean checked) { 

      if (isChecked) { 
       camera = Camera.open(); 
       Camera.Parameters parameters = camera.getParameters(); 
       parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
       camera.setParameters(parameters); 
       camera.startPreview(); 
       Toast.makeText(getApplicationContext(), "Flash Light is ON", Toast.LENGTH_LONG).show(); 
      } 
      else { 
        // Code to switch off Flashlight 
      } 

    } 
}); 
関連する問題