簡體   English   中英

Galaxy Nexus上的LED手電筒可通過什么API控制?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM