我有一個應用程序正在使用bindProcessToNetwork()強制通過WiFi連接的所有連接。這是因爲wifi連接連接到沒有互聯網連接的攝像頭,所以android自然會嘗試通過具有完整互聯網連接的蜂窩數據連接推送所有流量。這個代碼是:Android bindProcessToNetwork和RTSP流通過MediaPlayer
final ConnectivityManager connection_manager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connection_manager.requestNetwork(request.build(), new ConnectivityManager.NetworkCallback()
{
@Override
public void onAvailable(Network network)
{
try {
connection_manager.bindProcessToNetwork(network);
} catch (Exception e) {
e.printStackTrace();
}
}
});
此連接到相機時通過HTTP發出命令工作正常等。然而,發起RTSP流並試圖通過一個機器人的MediaPlayer進行查看時,將無法連接。對於媒體播放器的代碼:
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setSurface(new Surface(mTextureView.getSurfaceTexture()));
mMediaPlayer.setWakeMode(getActivity().getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mMediaPlayer.setDataSource(loc);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepareAsync();
如果我禁用了手機上的蜂窩數據,代碼完美的作品和RTSP流正常播放,默認路由是出了WiFi網絡。但是,當兩個網絡連接時,看起來RTSP請求沒有通過無線連接進入攝像機。這幾乎就像只有HTTP請求通過bindProcessToNetwork()被強制通過wifi。這不可能是這樣的情況,但在應用程序中的其他地方相機正在使用ping [InetAddress.isReachable()] [1]
是否有任何方法來強制MediaPlayer RTSP連接通過WiFi連接好?
你解決了這個問題嗎?我遇到了同樣的問題。 –