我正在编写一个应用程序,它将开始通过miracast将Android手机的屏幕投射到电视上。我使用的是HDMI软盘,因为问题中的电视不支持miracast。我一直在尝试代码这里,但是它需要一个应用程序ID,这是我在这些步骤之后得到的。我的问题是,指令似乎表明,我需要注册miracast dongle,以便它将与一个未发布的“调试”应用程序对话。然而,只提到谷歌的广播设备,这与miracast的协议不一样。我还需要注册吗?
有没有一种更简单的通过miracast对设备进行编程转换的方法?一个要求是没有用户交互,所以我不能只是显示一个强制按钮。
如果相关的话,我正在使用Android5.1。
编辑:经过进一步的研究,我意识到Google使用了一个与Miracast完全不同的协议,因此所有关于注册dongle的讨论都是无关紧要的。在Android中做Miracast是不需要注册的。问题是API是隐藏的,详见下面的答案。
发布于 2015-12-09 15:32:21
因此,这是可能的,但由于权限问题,只能在定制版本的Android上使用。
您需要使用的
WifiDisplay API的隐藏部分使其成为可能。此文件包含如何使用API转换显示的示例。据我所知,谷歌将在某个时候公开发布它,尽管它仍然隐藏在API 23的最新主版中。
如何访问隐藏的API
为了使用隐藏的API,这个指南(镜子在这里)提供了一个很好的介绍。但是,如果您使用的是API 22+,那么该指南将无法工作,因为android.jar的格式已经改变,并且classes.dex已经被分割成多个文件。因此,在这种情况下,这建议更准确。注意,关于framework-classes2.dex 的postscript也必须是;它不是可选的。
dex2jar工具的最新版本未能将API 22中的.dex文件转换为jar。作者这里提出了解决方案。我选择修补这个工具,而不是改变dex,因为这对我没有用。只需将作者提到的行从抛出RuntimeException更改为:
return TypeClass.INT;如何获得使用隐藏API的权限
一旦全部完成,下一步就是给你的应用程序CONFIGURE_WIFI_DISPLAY许可。不幸的是,正如您所看到的,这里具有系统级别的保护。这意味着您的应用程序必须使用与系统相同的密钥才能使用此权限。因此,除非你有谷歌的私钥,否则你就不能让你的应用程序在正常的Android手机上运行。我的解决方案是构建CyanogenMod的自定义版本(使用这指南),权限从“system”更改为“normal”。这就省去了签署任何东西的麻烦。对于CONTROL_WIFI_DISPLAY权限,我也做了同样的操作。虽然我不完全确定这是必要的,但这并不伤人。这两个权限都位于frameworks/base/core/res/AndroidManifest.xml中。将第2161-2169行改为:
<permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY"
android:protectionLevel="signature" />
<permission android:name="android.permission.CONTROL_WIFI_DISPLAY"
android:protectionLevel="signature" />至:
<permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY"
android:protectionLevel="normal" />
<permission android:name="android.permission.CONTROL_WIFI_DISPLAY"
android:protectionLevel="normal" />然后按照正常方式构建CyanogenMod。我可以确认这确实有效,但这限制了您的应用程序只能在安装了自定义CyanogenMod版本的设备上运行。此外,在安卓手机上安装CyanogenMod通常会使保修无效。
发布于 2019-02-14 04:50:39
try {
startActivity(new Intent("android.settings.CAST_SETTINGS"));
return;
} catch (Exception exception1) {
Toast.makeText(getApplicationContext(), "Device not supported", Toast.LENGTH_LONG).show();
}希望这将有助于您,做好屏幕镜像的转换设置,它使用您的设备的cast服务。但是你必须连接相同的无线网络设备和电视。
https://stackoverflow.com/questions/33828968
复制相似问题