2016-12-14 19 views
0

私はcamera2 APIを使用するアプリと古いカメラのバージョンを持っています。問題は、明白な理由から、minSdkVersion 16で単一のAPKを生成する必要があり、カメラ2が一緒にコンパイルされないということです。カメラ2と古いカメラAPIを持つ1つのAPKのみ

Camera2専用の写真アプリを作成して問題をすばやく修正しました。私はユーザーのAndroidバージョンを検出し、5.0以上の場合(21)、この特定のアプリケーションのインテントをトリガーします。私はこの問題に対してエレガントな解決策を得ることができませんでした。

だから、どうすればこの場合にAPKのみを生成できますか?

+0

[opencamera](https://github.com/almalence/OpenCamera)から学んで、Commonsguyが言ったことをやってみることができます – rupinderjeet

+0

@rupinderjeetそれは私には良いアプローチではありません。この提案をありがとう。 – Mateus

答えて

0

オプションA:両方のAPI

ステップ#1を使用して:あなたはcompileSdkVersion 21以上に設定します。理想的には、Androidの最新バージョンの場合は25に設定します。

ステップ2:両方のAPIのコードを記述します。

ステップ#3:のみデバイスは、Android 5.0以上を実行しているときandroid.hardware.camera2クラスを使用するコードを呼び出す:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP) { 
    // use camera2 
} 
else { 
    // use Camera 
} 

オプションB:だけ罰金に動作しますandroid.hardware.CameraクラシックカメラのAPI

を使用しますAndroid 7.1以前の端末android.hardware.Cameraのような時間がAndroid SDKから削除されるまで、それを使用してください。ただし、android.hardware.camera2クラスが提供する新機能を利用することはできません。

+0

親愛なる、私の質問はどのようにminSdkを必要とするcamera2の実装で別のAPKを避けるためにminSdk 16を使用して同じパッケージ(APK)にcamera2を入れることができるのかということです。 。 compileSdkVersionは25です。あなたが言ったように私はステップ#3を実装しました。 – Mateus

+1

@Mateus:「別のAPKを避けるために、minSdk 16を使用して同じパッケージ(APK)にcamera2を入れるにはどうすればいいのですか」 - それはオプションAです。オプションBの私のポイントは、あなたがしようとしていることが価値がないかもしれないということです努力。 "あなたが言ったようにステップ3が実装されました。" - それであなたはすでにそれを実装して以来、あなたはなぜ質問しましたか? – CommonsWare

+1

@Mateus:たとえば、私は[このライブラリ](https://github.com/commonsguy/cwac-cam2)のオプションAとそれに関連するアプリを1年以上使用しています。私は50以上のデバイスでそれをテストしており、そのアプローチはうまくいきます。 – CommonsWare

関連する問題