HTC の背面にある懐中電灯 (懐中電灯) を交換しようと練習しています。しかし、私はカメラにアクセスできません。マニフェストに次を入れました:
<uses-permission android:name="android.permission.FLASHLIGHT" android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" android:protectionLevel="normal"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera.flash" />
それは非常に単純でばかげているかもしれませんが、Google と StackOverflow は解決策を教えてくれませんでした。これは私の活動ファイルです:
import android.app.Activity;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.widget.*;
import android.view.View;
import android.util.Log;
import java.util.List;
public class FlashlightActivity extends Activity {
private Camera mCamera;
/** Called when the activity is first created, just a titlescreen. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageButton titlescreen = (ImageButton)findViewById(R.id.titlescreen);
titlescreen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
TurnFlashOff();
if (mCamera==null){
finish();}
else {
Intent go = new Intent(TurnMeOnFlashlightActivity.this,TMO_App.class);
startActivity(go);
}
}
});
Log.d("TurnMeOn", "startpage");
}
private void TurnFlashOff(){
if(mCamera != null){
mCamera = Camera.open();
Parameters params = mCamera.getParameters();
List<String> flashModes = params.getSupportedFlashModes();
if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.release();
mCamera = null;
} else {
Toast.makeText(TurnMeOnFlashlightActivity.this, R.string.FlashNoSupport, Toast.LENGTH_LONG).show();
mCamera.release();
mCamera = null;
}
} else {
Toast.makeText(TurnMeOnFlashlightActivity.this, R.string.FlashNoSupport, Toast.LENGTH_LONG).show();
}
}
}