android.media.tv 的依赖项是什么

what is a dependency for android.media.tv

我尝试将 android 电视应用移至 Android 工作室。当我尝试编译它时,出现了一些导入错误。我找不到可以添加到 build.gradle 来解决这些问题的依赖项。进口清单是:

import android.media.tv.TvContentRatingSystemInfo;
import android.media.tv.TvContract.WatchedPrograms;
import com.android.tv.tuner.data.nano.Track.AtscCaptionTrack;
import com.android.tv.tuner.data.nano.Track.AtscAudioTrack;
import com.android.tv.tuner.data.nano.Channel;

build.gradle 是:

apply plugin: 'com.android.application'

android {
 compileSdkVersion 26
 buildToolsVersion "26.0.1"

 defaultConfig {
     applicationId "com.android.tv"
     minSdkVersion 23
     targetSdkVersion 23
     versionCode 1
     versionName "1.0"

     ndk {
         moduleName "libtunertvinput_jni"
     }
 }
 sourceSets {
     main {
         res.srcDirs = ['src/main/res', 'src/main/usbtuner-res']
         jni.srcDirs = []
     }
 }
 buildTypes {
     release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
     debug {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
 }
}

dependencies {
 compile fileTree(dir: 'libs', include: ['*.jar'])
 compile files('libs/exoplayer.jar')
 compile project(':common')
 compile 'com.android.support:palette-v7:+'
 compile 'com.android.support:support-v4:+'
 compile 'com.android.support:support-annotations:+'
}

android.media.tvcom.android.tv 是 Android SDK 的一部分。所以你不需要在 gradle.build 文件中包含任何额外的库。

只需确保:

Update your SDK tools to version 24.0.0 or higher

Update your SDK with Android 5.0 (API 21) or higher

示例,

 android {
        compileSdkVersion 26
        buildToolsVersion "26.0.1"
        defaultConfig {
            applicationId "com.example.tvapp"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
        }
}

在你的依赖项中使用它"com.android.support:support-media-compat:26.0.2"

并使用工具版本“26.0.1”

编译SDK版本26.

您可以在应用级别添加依赖项gradle。

compile 'com.google.android.libraries.tv:companionlibrary:0.1'

您不能导入它们,因为它们有 @SystemApi 注释。 TvContentRatingSystemInfo的源代码可以查看this。我还检查了 WatchedPrograms 并且它也有 @SystemApi 注释。其他三个我没查过

您需要成为系统应用程序才能访问这些。如您所见 here, you need to push your app in the the \system\ folder. You can find detailed information about AOSP build system here.

解决方法: 将您的 android.jar 更改为此 github 中的 .jar 应该能让您访问系统 API。原因是您的标准 android.jar 没有系统 API。所以你需要从模拟器中获取 framework.jar(通过 adb pull)并将其与 core.jar 结合,然后你可以拥有包含系统 API(系统方法)的新 android.jar 类 可在模拟器的 framework.jar 中使用。

此外,您应该将 apk 推送到 \system\priv-app\ 文件夹以访问某些系统 API 但我不知道为什么我可以访问系统 API 而无需将我的 apk 推送到 \system\priv-app\ 当我从那个 github 帐户使用 .jar 时。

我感觉我写的不是很清楚,但至少现在你对你所面对的事情有了更多的理解。