私のアプリケーションでは、基本的にフラッシュLEDのオンとオフを切り替える画像ボタンがあります。コードは初めて正常に実行されます。つまり、最初にクリックするとLEDがオンになり、2回目にクリックするとオフになります。しかし、3番目のクリック以降は何も起こりません。NexusSでこれをテストしています。
以下は、ImageButtonClickメソッドのコードです。
public void ToggleTorch(){
final ImageButton tt = (ImageButton)findViewById(R.id.tt);
tt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
if (isFlashOn){
mycam.stopPreview();
isFlashOn = false;
} else {
mycam.startPreview();
isFlashOn = true;
}
}
});
}
私の考えでは、stopPreviewを呼び出している間は破棄されていないと思うので、SurfaceViewで何かを行う必要がありますが、よくわかりません。
以下は、onCreateメソッドのコードです。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Check if Flash Light is Available
Boolean has_flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if(has_flash){
setContentView(R.layout.activity_main);
SurfaceView preview = (SurfaceView)findViewById(R.id.pSv);
SurfaceHolder holder = preview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
disableSleepMode();
initFlashLight();
ToggleTorch();
screenTorchOn();
} else {
setContentView(R.layout.activity_main);
disableSleepMode();
screenTorchOn();
}
}
どんな助けでもいただければ幸いです。ありがとう。