为了定义1080p和720p android TV的不同维度值,我需要决定应该使用哪个限定符.当我尝试使用像值-sw1080p,values-sw720p这样的东西时,它不起作用.dimes.xml中的值不会影响任何内容.但是如果我使用像-sw540dp,-sw360dp这样的限定符,它就可以工作.我真的不明白为什么这样.任何的想法?谢谢.
在查看Android TV偏好设置和内置应用程序(如YouTube)时,它们似乎使用标准布局,如下所示:


我找不到在Android TV上实现首选项的任何示例,也找不到任何LeanBack等库中引用的上述布局.
这是我可以重用的"标准"(比如普通的Android PreferenceFragment)还是我必须设计自己的偏好系统?
可以使用LeanBack"BrowseFragment"复制第一个图像,但是使用我迄今为止找到的任何内容都无法实现较低的图像.
我在市场上有一个具有minSDK版本9的应用程序,我还开发了具有相同软件包名称的此应用程序的Android TV版本,但API级别重叠.
所以,我的问题是; 如何上传2个不同的apk(电视和手机/平板电脑)相同的包名?Android电视的APK应该只能看电视和Nexus播放器等.其他Apk必须同时只能看到手机和平板电脑.
我确实阅读了有关多个APK支持的所有文档但是当我通过我当前可用的应用程序上传APK for Android TV时,旧版本变得不可用(不兼容)用于手机和平板电脑.
在我的情况下,两个不同的APK具有不同的包名称是不可接受的.
我必须有单个包名,两个不同的APK,两个必须可用于他们的兼容设备.
在我的电视应用清单中,使用了这些功能;
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="true" />
Run Code Online (Sandbox Code Playgroud)
<activity
android:name="com.mydomain.android.ui.ActivityYYY"
android:icon="@drawable/my_banner"
android:label="@string/app_name"
android:logo="@drawable/my_tv_banner"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我的手机/平板电脑应用程序没有使用功能,如下所示,有正常的启动器
<activity
android:name="com.mydomain.android.ActivityXXX"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我该怎么办?那时我错过了什么?我需要一个明确的解释或解决方案.
我有一个dirPath String变量,我希望能够将其更改为我选择的Android TV应用程序目录.我觉得Leanback框架的幻灯片式界面对于更微妙的动作来说有点麻烦,但我想坚持下去,因为我是Android和java的完全初学者.
因此,尝试坚持最佳实践,我希望用户能够更改dirPath为指向他们选择的目录(dirPath用作变量来扫描指定目录及其子目录中的音乐).在其他平台上,我会寻找操作系统的标准文件打开对话框,但我似乎无法在Leanback框架中找到一个.
我最好的猜测是使用GuidedStepFragments.为了选择一个目录,引入一个完整的选项页面(请参阅我之前关于leanback的类似幻灯片的UX的评论)感觉有点不合适,但看起来我没有多少选择?其次,我没有在GuidedActions中看到任何文件对话框小部件.也许我错过了它,否则谷歌热衷于指导文件选择在线而不是本地.
附加信息:
我正在尝试扫描所有子目录中的mp3和flac文件dirPath,然后将路径,元数据等添加到SQLite我已经使用虚拟数据的数据库中.我正在避免,mediastore因为它有太多的限制,特别是它无法访问网络共享,这对我来说是理想的NAS访问.
一旦用户提名a dirPath并开始扫描,我将把它传递给AsyncTask在UI上的单独后台线程上运行.
总结一下:
我正在尝试使用AsyncTask与UI不同的线程扫描Android TV设备的附加存储空间以查找音乐文件.扫描将被提供dirPath String变量,并将检查此路径及其所有子目录的音乐文件,然后将其传递到元数据提取器,然后将相关数据存储在SQLite数据库中.
我想我对实现扫描有一些了解(Google提供了示例)并且已成功实现将虚拟数据插入数据库.我似乎无法管理的是提供一种简单的方法让用户选择使用Android TV的Leanback库扫描的路径.显然这在Leanback中不可用.我有没有办法实现这不是一场噩梦?我正在寻找尽可能简单的目录选择对话框.如果它必须使用整个选项页面,ala GuidedStepFragments,那就这样吧.
在Android Oreo中.活动可以进入点模式并返回启动器.
https://developer.android.com/guide/topics/ui/picture-in-picture.html
现在我是发射器.有没有办法知道目前屏幕上是否显示了一个点子窗口?
isInPictureInPictureMode() 仅指示您的应用程序pipmode,如果有其他应用程序进入pip模式,则该pipmode将为false.
退出应用程序并转到pipmode返回启动程序时,intent标志是相同的.
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_NEW_TASK
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP
12-15 03:31:39.581 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_FOREGROUND
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_NEW_TASK
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
12-15 …Run Code Online (Sandbox Code Playgroud) 我是 Android TV 开发新手。
我为此使用 android Leanback 库。我还使用 BrowseSupportFragment 和 RowsSupportFragmen。
这里我想自定义如图所示的HeaderItem。
我特别想改变它的字体。我检查了很多东西,但没有得到适当的解决方案。
谢谢。
我已经找到了几个例子,随着工作Leanback和ExoPlayer我有所有的工作,但我不能让字幕/字幕的工作。我能找到的最新 Google 示例(https://github.com/android/tv-samples)在 Java 示例上有一个标题按钮,但它们从未出现。Kotlin 示例有一条评论说// TODO(owahltinez): handle captions.
我已经对其中一个样本进行了这些更改,但没有帮助:
private void prepareMediaForPlaying(Uri mediaSourceUri) {
String userAgent = Util.getUserAgent(getActivity(), "VideoPlayerGlue");
DefaultDataSourceFactory defaultDataSourceFactory = new DefaultDataSourceFactory(getActivity(), userAgent);
MediaSource mediaSource =
new ExtractorMediaSource(
mediaSourceUri,
defaultDataSourceFactory,
new DefaultExtractorsFactory(),
null,
null);
String subtitle = "https://subtitledomain/sintel-en.vtt";
Uri uriSubtitle = Uri.parse(subtitle);
MediaSource subtitleMediaSource = new SingleSampleMediaSource.Factory(defaultDataSourceFactory)
.createMediaSource(uriSubtitle, Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, C.SELECTION_FLAG_FORCED, "n/a"), C.TIME_UNSET);
mediaSource = new MergingMediaSource(mediaSource, subtitleMediaSource);
mPlayer.prepare(mediaSource);
}
Run Code Online (Sandbox Code Playgroud)
还有这个变化:
mTrackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
DefaultTrackSelector.Parameters parameters = mTrackSelector.getParameters(); …Run Code Online (Sandbox Code Playgroud) 我希望在我家的 Android TV 设备上安装和自动/一键更新应用程序的早期开发版本。我最初使用内部跟踪尝试使用 Google Play,但结果证明最初是由人工审核的,并且由于应用程序不完整而被拒绝。我不想陷入设计/等。绕过 Play 评论家,尤其是现在 7 天~周转时间。
我找到了 Firebase App Distribution,对于我想要实现的那种测试来说,这似乎是一个不错的选择,但设置过程似乎非常以移动为中心,并谈到点击电子邮件等中的链接,这在 Android TV 上是不可行的。
我的目标是:
我试过了:
所以我想我的问题是:
目前,我要么必须将设备靠近笔记本电脑以adb安装 APK,要么将 APK 推送到网络共享并使用电视设备上的文件管理器手动安装和更新应用程序。
我在 Play 商店中发布了 Android TV 应用程序。我通过访问选择了 Android TV Setup > Advanced Settings > Release Types。后来由于正当理由被拒绝,我收到了一封电子邮件。
现在,我修复了问题并发布了新版本。
\n我预计高级设置中 Android TV 部分的Rejected状态会更改为。In Review
但是,可悲的是,它只是表明了Update rejected。目前尚不清楚这是否意味着新的更新被拒绝。我没有收到任何电子邮件。即使“政策”部分中的错误消息仅显示最后一次拒绝的详细信息,日期也反映了第一次拒绝的情况。
现在,我认为,发布更新后甚至没有启动审核。我如何发起审核?我试过opt-out \xe2\x87\xa8 save \xe2\x87\xa8 opt-in。即使如此,它也不会进入in review状态。
任何帮助表示赞赏...
\n\n\n\n请注意,该应用程序的新版本已被批准为常规应用程序。拒绝仅在Android TV.