2012-01-28 44 views
1

上我下载了googletv-video-player example,拿起只有VideoPlayerActivity,因为我只是在如何播放流媒体的兴趣。问题而玩GoogleTV的视频播放器例如视频流的谷歌电视

我修改了它的xml & java文件以全屏模式播放视频。

这里是我现在有:

player.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="fill_parent" android:layout_width="fill_parent" android:padding="10dp"> 

<VideoView android:id="@+id/videoViewFullScreen" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true"/> 
</RelativeLayout> 

player.java

public class player extends Activity implements 
    AudioManager.OnAudioFocusChangeListener, 
    MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener { 
public static final String TAG = "VPActivity"; 

public VideoView mVideoView = null; 

// Handle AudioFocus issues 
public void onAudioFocusChange(int focusChange) { 
    switch (focusChange) { 
    case AudioManager.AUDIOFOCUS_GAIN: 
     Log.i(TAG, "AF Gain"); 
     if (mVideoView != null) 
      mVideoView.resume(); 
     break; 

    case AudioManager.AUDIOFOCUS_LOSS: 
     Log.i(TAG, "AF Loss"); 
     if (mVideoView != null) 
      mVideoView.stopPlayback(); 
     mVideoView = null; 
     this.finish(); // Let's move on. 
     break; 

    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: 
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: 
     Log.i(TAG, "AF Transient"); 
     if (mVideoView != null) 
      mVideoView.pause(); 
     break; 
    } 
} 

public void onCompletion(MediaPlayer mp) { 
    Log.i(TAG, "done."); 
    mVideoView = null; 
    this.finish(); 
} 

public boolean onError(MediaPlayer mp, int what, int extra) { 
    Log.e(TAG, "IO Error e=" + what + " x=" + extra); 
    return false; // Will call onCompletion 
} 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Request Audio Focus 
    AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    int result = am.requestAudioFocus(this, AudioManager.STREAM_MUSIC, 
      AudioManager.AUDIOFOCUS_GAIN); 
    if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
     Log.e(TAG, "Can't get AudioFocus " + result); 
     this.finish(); // Just give up. 
    } 

    //added the following to make video large, hide title and keep activity alive 
    //--------------------------------------------------------------------------- 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    //----------------------------------------------------------------  

    setContentView(R.layout.player); 


    mVideoView = (VideoView) findViewById(R.id.videoViewFullScreen); 
    mVideoView.setVideoPath("rtsp://stream-url"); 
    mVideoView.setOnCompletionListener(this); 
    mVideoView.setOnErrorListener(this); 

    MediaController mc = new MediaController(this, true); 
    mc.setMediaPlayer(mVideoView); 
    mc.setAnchorView(mVideoView); 
    mVideoView.setMediaController(mc); 
    mVideoView.requestFocus(); 
    mVideoView.start(); 
} 
} 

现在我有两个问题

One on Motorola Xoom Tablet and 
Second on Google TV 

平板电脑问题(Android版本:4.0.3) 这是一个小问题。平板电脑开始正确地播放视频它完美地播放视频15-20分钟。但过了一段时间,视频停止播放。我通过点击屏幕来检查它的状态,并且我意识到该玩家自动地停止停止。!

enter image description here

当我拍了拍播放再次..它开始播放的流完美。 它为什么会自动停止?谷歌电视上

问题(Android版本:3.1)

这是一个比较严重的问题。首先,谷歌电视是不是在玩它的一切,都会给我以下错误:

Cannot Play Video 
----------------------------------------- 
Sorry, this video cannot be played. 

编辑:现在这个问题已经消失,视频播放....我什么也没做。 但是,它是这样表现?

现在的问题是,谷歌电视屏幕只显示在左上角的视频的1/4部分,其余的视频被隐藏....仿佛VideoView对象被拉伸,而另一些对象在它的顶部有一个左上角的开放窗口,它隐藏了VideoView

并且玩家活动自动完成。

该视频甚至在模拟器&平板电脑中播放,因此我无法粘贴LogCat中由模拟器生成的错误(因为没有错误)。

我的Android应用程序是基于Android 3.1的库

回答

2

我想你是在Google的代码,它工作正常。我建议你需要更改流网址的唯一事情是这一行:

mVideoView.setVideoPath("rtsp://stream-url"); 

以上是播放本地文件,流媒体URL使用,而不是以下:

mVideoView.setVideoURI(Uri.parse("rtsp://stream-url")); 
+0

感谢MEGHA ..我将尝试它,并会让你知道 – Aamir 2012-01-30 21:02:46

+0

你是对的Megha ...这是造成问题的流...谢谢 – Aamir 2012-01-31 18:36:36