【问题标题】:How to make compatibility in android app如何在android应用程序中进行兼容性
【发布时间】:2018-07-10 14:12:14
【问题描述】:

我是初学者 Android 开发者。我已经构建了简单的 android 应用程序,它使用来自相机的闪光灯。我已经为少于 23 的 API 构建了这个应用程序并且它正在工作,但是我将相机库更改为 camera2 并重建了应用程序。但我的问题 - 我的应用程序仅兼容大约 5k 设备。旧版本兼容约 13K 设备。我想我与许可或功能混淆了。有什么问题请指教。

请在下面查看我的清单文件:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

<uses-permission android:name="android.hardware.camera.flash"/>

<application...>

还有 build.gradle

android {
compileSdkVersion 26
buildToolsVersion '25.0.3'
defaultConfig {
    applicationId "com..."
    minSdkVersion 23
    targetSdkVersion 26
    versionCode 24
    versionName "2.3"
}   
}

【问题讨论】:

标签: android android-permissions android-camera2


【解决方案1】:

这只是因为目标api越高,兼容的设备数量就越少。

如果只是手电筒,那么我会继续使用旧版本,至少我的手电筒应用就是这样做的。

记得请求 sdk 23 及更高版本的许可。

【讨论】:

  • 我不能使用旧版本,因为我使用的是 API22 以上版本不推荐使用的相机库
  • 如果您想要更多用户,您必须使用已弃用的 api
【解决方案2】:

minsdkversion 必须低。设置在 21 左右以获得更多设备兼容。如果您使用 21,它支持上述棒棒糖设备。

【讨论】:

  • 为什么你把句子大写。请使用正确的格式来回答问题。
  • 我不能。相机库最多支持 22 个和 22 个以上的 camera2
  • @VSirchenko 您可以使用这两个库,并且可以通过比较版本来调用该方法。为了您的帮助,这是实现这一目标的方法。 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){ // 为棒棒糖及以上版本做一些事情 } else{ // 为在棒棒糖之前运行 SDK 的手机做一些事情 }跨度>
【解决方案3】:

您可以使用这两个库,并且可以通过比较版本来调用该方法。为了您的帮助,这是实现这一目标的方法。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    // Do something for lollipop and above versions
} else{
    // do something for phones running an SDK before lollipop
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多