[英]LED flashlight on Galaxy Nexus controllable by what API?
如此多的LED手電筒API問題適用於Android。 我不敢問另一個,但是這里......
使用經過驗證的真實FLASH_MODE_TORCH,我可以滿足我的三星Galaxy SII並啟用LED閃光燈。 在我朋友的Galaxy Nexus上,沒有這樣的運氣。 也不是我的另一個朋友的Droid X.
我注意到似乎需要特定的本機IOCTL調用的設備數量不是很少。 這是Galaxy Nexus的情況嗎? 我如何找到編程參考?
我正在做標准的FLASH_MODE_TORCH /“flash-mode”=“torch”,startPreview()鏈。
令人失望的是,這個看似標准的API似乎並不是那么普遍。
我發現有些設備需要SurfaceView來打開LED。
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 / Bottom將它塞進一個角落里。 這種方法適用於我的Galaxy Nexus,但它是Droid X的一個已知問題(電話端)(無論如何都有.621更新),並且不適用於我的。 很棒的回答,蒂莫什!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.