在做影像處理的應用時,可能會需要用到裝置內的 Camera 來截取影像。而 Android 裝置百百種,不一定每台都有相機,因此如何在沒有相機的裝置上避免程式發生錯誤就是必須考量的。 第一種狀況是當你的應用會上架至 Google Play 商店時,請用 AndroidManifest.xml 中的 <uses-feature> 與 <uses-permission> 標籤宣告會使用 Camera 功能及相關權限: 例如: <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.CAMERA"/> 這樣你的應用程式就不會出現在無 Camera 裝置的 Google Play 商店中,使用者無法下載,自然也就避免了發生錯誤的可能。 第二種狀況是使用者可能從第三方市集或透過其他途徑取得軟體,那就不一定都有完善的篩選機制了,因此你可能必須在程式內部做判斷處理,以避免 Crash。 第三種狀況是 Camera 並非你應用中的主要功能,即使裝置沒有 Camera,還是可以使用其他功能,但使用者介面可能必需做一些調整,比如隱藏呼叫 Camera 的按鍵或是在使用者試圖使用 Camera 相關功能時跳出提示訊息。 而針對狀況二與狀況三,可用的判斷方法如下: PackageManager packageManager = context.getPackageManager(); if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { Log.i("camera", "This device has camera!"); } else { Log.i("camera", "This device has no camera!"); } 簡單說就是利用 PackageManager 檢查裝置是否有 Camera 功能,注意...
Creating apps to make your life easier.