Wrote an application for GoogleTV box to play a video. The video is a separate activity to the main activity.
Wired up a button on my main layout/activity to to start the video activity up (using its own video.xml layout), the video activity loads and starts playing, but the video is clipped, only showing a few centimetres of the bottom. The clipped region looks like the views that occupied the previous layout (main.xml) . The intriguing thing is that if I push the back button, before returning to the main activity the full video frame is shown.
Not sure what I am doing wrong here. Any suggestions welcome.
Code:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/hello_message"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:gravity="center"
android:text="@string/hello_message"
android:textSize="78sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:id="@+id/edit_message"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="@string/edit_message" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="displayMessage"
android:text="@string/button_send" />
<Button
android:id="@+id/button_send_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sendMesssage"
android:text="@string/button_send_a" />
</LinearLayout>
<Button
android:id="@+id/videobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="startAVideo"
android:text="Video Player" />
</LinearLayout>
GoogleTVExActivity.java (excerpt):
...
public class GoogleTVExActivity extends Activity {
public final static String EXTRA_MESSAGE = "uk.co.bbc.googletvex.MESSAGE";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void displayMessage(View view)
{
TextView t = (TextView)findViewById(R.id.hello_message);
EditText e =(EditText) findViewById(R.id.edit_message);
t.setText(e.getText().toString());
e.setText("");
}
public void sendMesssage(View view)
{
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
public void startAVideo(View view)
{
Intent intent = new Intent(this, VideoViewActivity.class);
startActivity(intent);
}
}
video.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<VideoView
android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
VideoViewActivity.java (excerpt)
...
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoViewActivity extends Activity {
String SrcPath = "rtsp://v5.cache1.c.youtube.com/CjYLENy73wIaLQnhycnrJQ8qmRMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYPj_hYjnq6uUTQw=/0/0/0/video.3gp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);
myVideoView.setVideoURI(Uri.parse(SrcPath));
myVideoView.setMediaController(new MediaController(this));
myVideoView.requestFocus();
myVideoView.start();
}
}
Make sure that the VideoViewActivity is fullscreen ie.
Add the following to the and/or of the AndroidManifest.xml
If the video is not fullscreen after that or has some blank area it might be because the video’s aspect ratio is different from your Google TV screen aspect ratio. Android will scale the video to fit the VideoView but it wont stretch it higher while keeping the width the same. You can try to re-make the videos and force them into a more standard 1080p or 720p aspect ratio.