Android 手机投屏到 TV 需要通过 Miracast 技术实现。以下是实现 Miracast
投屏的简单代码示例:
1. 在
AndroidManifest.xml 中添加权限:
```
<uses-permission
android:name="
android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="
android.permission.CHANGE_WIFI_STATE" />
<uses-permission
android:name="
android.permission.INTERNET" />
<uses-permission
android:name="
android.permission.ACCESS_NETWORK_STATE" />
```
2. 打开 Wi-Fi 并搜索支持 Miracast 的设备:
```
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
WifiP2pManager wifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = wifiP2pManager.initialize(this, getMainLooper(), null);
wifiP2pManager.discoverPeers(channel, new WifiP2pManager.Actio
nListener() {
@Override
public void o
nSuccess() {
// 搜索成功
}
@Override
public void o
nFailure(int reason) {
// 搜索失败
}
});
```
3. 连接到支持 Miracast 的设备:
```
WifiP2pDevice device = ... // 获取支持 Miracast 的设备
WifiP2pCo
nfig co
nfig = new WifiP2pCo
nfig();
config.deviceAddress = device.deviceAddress;
wifiP2pManager.co
nnect(channel, config, new WifiP2pManager.Actio
nListener() {
@Override
public void o
nSuccess() {
// 连接成功
}
@Override
public void o
nFailure(int reason) {
// 连接失败
}
});
```
4. 开始
投屏:
```
MediaRouter mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo routeInfo = ... // 获取支持 Miracast 的设备信息
MediaRouteSelector selector = new MediaRouteSelector.Builder()
.addCo
ntrolCategory(MediaControlIntent.CATEGORY_REMOTE_DISPLAY)
.build();
MediaRouter.Callback callback = new MediaRouter.Callback() {
@Override
public void o
nRouteSelected(MediaRouter router, MediaRouter.RouteInfo info) {
//
投屏成功
}
@Override
public void o
nRouteUnselected(MediaRouter router, MediaRouter.RouteInfo info) {
//
投屏结束
}
};
mediaRouter.selectRoute(routeInfo);
```