2012-11-03 98 views
0

我很抱歉在所有其他類似問題中發佈了另一個問題,但是我沒有嘗試過的任何問題都能奏效。我試圖打開閃光燈。這裏是我的清單:打開手電筒

<uses-permission android:name="android.permission.CAMERA" /> 

<uses-permission android:name="android.permission.FLASHLIGHT"/> 

<uses-feature android:name="android.hardware.camera" 
    android:required="false" /> 

<uses-feature android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 

<uses-feature android:name="android.hardware.camera.flash" 
    android:required="false" /> 

這是我用於打開手電筒代碼:

Camera cam = Camera.open();  
    Parameters p = cam.getParameters(); 
    p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
    cam.setParameters(p); 
    cam.startPreview(); 

它是什麼,我做錯了嗎?

回答

1

你確定你的設備可以處理FLASH_MODE_TORCH嗎? camera.getParameters()。getSupportedFlashModes(); 檢查FLASH_MODE_TORCH是否在該調用返回的列表中。

+0

它在Galaxy Nexus上,我已經有了這張支票,我只是選擇不將它包含在代碼片段中,以便集中讀者的注意力。該檢查不會返回null。 – SweSnow

0

我用下面的清單:

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

小心添加此對清單的右邊部分! 看看放在這裏的模型: http://developer.android.com/guide/topics/manifest/manifest-intro.html

我的代碼在開啓閃光燈看起來是這樣的:

public void myFlash (View view) { 

    Context context = this; 

    context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 

    Camera cam = Camera.open(); 
    Camera.Parameters p = cam.getParameters(); 
    p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
    cam.setParameters(p); 
    cam.startPreview(); 

    //cam.stopPreview(); 
    //cam.release(); 

} 
0

可能是這樣link會幫助你。我發現這對我有用。