我有一個關於在最近的棉花糖構建,更具體的手電筒相機的問題。 在任何預棉花糖版本的所有我需要做的開啓/關閉閃光燈進行以下操作:棉花糖手電筒控制
private void turnFlashOn(final Camera camera, int flashLightDurationMs) {
if (!isFlashOn()) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(mParams);
}
}
}
和
private void turnFlashOff(Camera camera) {
if (camera != null) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(mParams);
}
}
}
不幸的是,棉花糖設備開始在野外崩潰。不知怎的,camera.getParameters()
和camera.setParameters()
開始失敗的消息,如:
的RuntimeException:getParameters失敗(空參數)
的RuntimeException:setParameters失敗
我試着開始和獲取之前停止預覽參數,不再拋出錯誤。但是,當我撥打camera.startPreview()
時,預覽不會恢復。
我擔心釋放相機並重新打開它是不可能的,因爲這需要幾秒鐘的時間,並且會產生不好的體驗。
關於如何可靠地打開/關閉棉花糖手電筒的任何建議?
我有相機的權限了。我的目標不是23,所以我不需要檢查運行時權限,對嗎? –
是和不是。如果你不是以23爲目標的,那麼權限應該已經被授予。但是,安裝後用戶可能會禁用該權限。在這種情況下,您需要檢查(如果在API 23設備上運行)是否有權限。如果你不是因爲用戶拒絕它,那麼相機API可能會返回空數據或空數據。本次演講將提供更多有關棉花糖權限更改的詳細信息:https://youtu.be/WGz-alwVh8A?list=PLnVy79PaFHMUqqvwbjyKJZv1N8rzHOCBi –
你說得對,的確如此。然而,即使使用授予的權限,應用程序也會崩潰,所以看起來和Camera API相關的東西發生了變化,而且行爲與在棒棒堂或奇巧中的行爲不同。 –