我正在遇到一个我正在处理的视频流应用程序的奇怪问题.实际的视频/音频流在我的所有测试设备上都能正常工作.然而,在看似任何设备4.0+时,当使用RTSP URL时,prepare()立即返回(这会导致在视频加载时向用户提供适当反馈的问题并干扰我现有的其他一些系统).
下面是我初始化和设置MediaPlayer的代码块,但请记住以下几点:
我一直试图解决这个荒谬的时间,并且无法找到遇到此问题的其他人.任何想法将不胜感激.
public void initPlayer() {
//We first need to make sure the MediaPlayer isn't null
if(mMediaPlayer==null){
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnPreparedListener(mediaPlayerPreparedListener);
mMediaPlayer.setOnCompletionListener(mediaPlayerCompletionListener);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
//If a video/stream has been chosen while another is already playing
else if(mMediaPlayer.isPlaying()){
mMediaPlayer.reset();
}
//Video is not in full screen mode
second = false;
try {
mMediaPlayer.setDataSource(videoString);
holder = mPreview.getHolder();
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException …Run Code Online (Sandbox Code Playgroud) 我们最近注意到一个数据异常,因为许多设备通过DisplayMetrics误报了他们的xdpi和ydpi.
作为一个具体的例子,运行4.4.2的所有SPH-L710 Sprint Galaxy S III设备报告的xdpi和ydpi为~160.分辨率为1280x720,这可以测量到~9英寸的屏幕尺寸,显然不是这种情况.在4.4.2之前,该设备模型分别正确报告其xdpi和ydpi:~304和~306.
我们通过DisplayMetrics访问此信息,如下所示:
DisplayMetrics dm = getResources().getDisplayMetrics();
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Run Code Online (Sandbox Code Playgroud)
有没有人注意到这些指标是不一致/不可靠的?有更准确的方法来访问这些信息吗?
编辑:我发现这篇关于xdpi/ydpi不准确的帖子.Romain和Dianne似乎都承认这个问题 - 所以DisplayMetrics文档没有记录这些不可靠的属性这一事实对我来说似乎是不负责任的.