7

ボタンを押すとフラッシュライトが点灯するアプリを作成しようとしています。問題は、アプリが携帯電話のフラッシュ ライトを検出しないことです。私はインターネットでたくさん検索しました。確かに他の人が問題に直面しています。私もそれらの解決策を適用しましたが、うまくいかないようです。この問題の原因がわかりません。ここにコードを投稿する:

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

    if(! getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) // checking if flash light is available inn android phone
    {
        Toast.makeText(StartingPoint.this, "Sorry this app can't work without flash light", Toast.LENGTH_LONG).show();
        finish();
    }

    cam = Camera.open();

    param = cam.getParameters();


}

@Override
public void onClick (View v)
{
      if(!flashOn)
        {
            i=0;

            flashOn=true;

            param.setFlashMode(Parameters.FLASH_MODE_TORCH);
            cam.setParameters(param);
            cam.startPreview();
        }
        else{
                i=0;

                flashOn=false;

                param.setFlashMode(Parameters.FLASH_MODE_OFF);
                cam.setParameters(param);
                cam.stopPreview();
            }

}

Android マニフェストにもこれらのアクセス許可を追加しました。

<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.camera.autofocus" />

よろしく

4

4 に答える 4

0

一部のカメラには表面ホルダーが必要です。そうしないと、フラッシュがブロックされます。

SurfaceView preview = (SurfaceView) findViewById(...);
SurfaceHolder holder = preview.getHolder();
holder.addCallback(this);
Camera camera = Camera.open();
camera.setPreviewDisplay(holder);
于 2014-07-02T15:10:29.587 に答える
0

パラメータを再度設定していないと思います。これを使用して、懐中電灯があるかどうかを確認しました。

public static Boolean hasFlashLight(Context context){
    return context.getApplicationContext().getPackageManager()
            .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
}

オンとオフを切り替えるには:

Parameters params = mCamera.getParameters();
if (!isFlashlightOn) {
    params.setFlashMode(Parameters.FLASH_MODE_OFF);
} else {
    params.setFlashMode(Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);

あなたにも当てはまるかどうか教えてください。

于 2014-06-25T15:45:53.517 に答える