私が知りましたところ、一部のデバイスでは、LEDをオンにするためにSurfaceViewが必要でした。
SurfaceView preview = (SurfaceView) findViewById(R.id.PREVIEW);
SurfaceHolder mHolder = preview.getHolder();
mHolder.addCallback(this);
Camera mCamera = Camera.open();
mCamera.setPreviewDisplay(mHolder);
// Turn on LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
...
// Turn off LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
あなたの活動はSurfaceHolder.Callbackを実装する必要があります。
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {}
public void surfaceCreated(SurfaceHolder holder) {
mHolder = holder;
mCamera.setPreviewDisplay(mHolder);
}
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mHolder = null;
}
surfaceviewがandroid:visibility="invisible"
がまたは0の高さと幅が動作しません、見えなければなりません。残念ながら、私はそれを隠す良い解決策を見つけられなかったので、私は ちょうど1x1dipのサイズを与え、ボタンの下にそれを置いた。
**(上記の段落[あなたの現在のコンテンツビューのXMLのどこかに)返信が、それは]を便利だと感じたし、あなたが望む:
<SurfaceView
android:id="@+id/PREVIEW"
android:layout_width="1dip"
android:layout_height="1dip"/>
あなたはRelativeLayout(優先内側にそれを持っている場合)、あなたも挟むためにalignParentLeft /ボトムを行うことができますそれは角にある。この方法は私のGalaxy Nexusでも機能しますが、Droid Xの既知の問題(電話側)(.621アップデートあり)は、私の場合は動作しません。素晴らしい答え、timosch!
私はこれを撃つつもりです。ありがとう - – Malachi
これは機能しましたか?誰にも? –
これは機能しましたか? – Ivan