Android 安卓:当我全屏观看youtube视频时,按下back键,活动结束
我已经阅读了YouTube视频全屏显示的方法是按下后退,但在我的Android 安卓:当我全屏观看youtube视频时,按下back键,活动结束,android,fullscreen,android-youtube-api,Android,Fullscreen,Android Youtube Api,我已经阅读了YouTube视频全屏显示的方法是按下后退,但在我的活动中,它不是这样工作的,但我希望它是这样 我给你发代码: public class MainActivity extends YouTubeFailureRecoveryActivity { public static String prefix = "https://gdata.youtube.com/feeds/api/playlists/"; public static String sufix = "?v=
活动中,它不是这样工作的,但我希望它是这样
我给你发代码:
public class MainActivity extends YouTubeFailureRecoveryActivity {
public static String prefix = "https://gdata.youtube.com/feeds/api/playlists/";
public static String sufix = "?v=2&alt=jsonc";
private String myPlayList = "PLZGKlf2ZwY7ua0C2oeUaXQKeLKNGy3mkh";
private VideosListFragment videosFragment;
// The next video to play
private Video actualVideo;
// This is the handler that receives the response when the YouTube read
private Handler responseHandler;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videosFragment = (VideosListFragment) getFragmentManager().findFragmentById(R.id.videosListView);
getUserYouTubeFeed();
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
player.loadVideo(actualVideo.getVideoId());
}
}
@Override
protected YouTubePlayer.Provider getYouTubePlayerProvider() {
return (YouTubePlayerFragment) getFragmentManager().findFragmentById(
R.id.youtube_fragment);
}
public void getUserYouTubeFeed() {
responseHandler = new Handler() {
public void handleMessage(Message msg) {
populateListWithVideos(msg);
};
};
// We start a new AsyncTask that does its work on its own thread
// We pass in a handler that will be called when the task has finished
LoadPlayListElements bgTask = new LoadPlayListElements(responseHandler);
bgTask.execute(myPlayList);
}
/**
* This method retrieves the Library of videos from the task and passes them
* to our ListView
*
* @param msg
*/
private void populateListWithVideos(Message msg) {
Library lib = (Library) msg.getData().get(
LoadPlayListElements.LIBRARY);
VideosAdapter videos = new VideosAdapter(this, lib.getVideos());
videosFragment.setListAdapter(videos);
}
@Override
protected void onStop() {
// Make sure we null our handler when the activity has stopped
responseHandler = null;
super.onStop();
}
public void setVideo(Video _item, boolean _activate) {
actualVideo = _item;
if (_activate){
YouTubePlayerFragment fragment = (YouTubePlayerFragment) getFragmentManager()
.findFragmentById(R.id.youtube_fragment);
if (fragment != null && fragment.isInLayout()) {
fragment.initialize(DeveloperKey.DEVELOPER_KEY, this);
}
}
}
}
布局如下:
<?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="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<fragment
android:id="@+id/videosListView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="?android:attr/actionBarSize"
class="com.vivoenmimundo.sc2hotsepicreplays.ui.phone.fragment.VideosListFragment" >
</fragment>
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:id="@+id/youtube_fragment"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center_vertical"/>
</LinearLayout>
有什么想法吗?我试着不做任何太奇怪的事情,只是复制/粘贴YouTube的API示例。您可以尝试检测按下后退按钮并自定义它的功能
// Sets functionality of the hard buttons on the device
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Custom define what you want to happen
}
return true;
}
如前所述,这是正确的行为-因为玩家在碎片中,我必须用以下方法抓住后退按钮:
@Override
public void onBackPressed() {
if (fullScreen){
videoPlayer.setFullscreen(false);
} else{
super.onBackPressed();
}
}
并将我的“全屏”布尔值设置为:
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
showPlayer();
videoPlayer = player;
videoPlayer.setOnFullscreenListener(new OnFullscreenListener() {
@Override
public void onFullscreen(boolean _isFullScreen) {
fullScreen = _isFullScreen;
}
});
videoPlayer.loadVideo(actualVideo.getVideoId());
}
}
谢谢大家 第1步:按照Nhano的回答16
第二步:在你的Menifest YoutubeActivity标签下面添加一行
android:configChanges=“方向|屏幕大小”
此解决方案对我有效。按back键时,调用onStop或onDestory并销毁活动似乎是一种正确的行为。如何使用OnBackpress方法访问videoPlayer?我也尝试了同样的方法,但得到了这个NullPointerException:尝试在null对象引用上调用接口方法'void com.google.android.youtube.player.youtubeplyer.setFullscreen(布尔)'。但是在onInitializationSuccess方法内的字段变量中调用videoplayer对象这在片段中不起作用。AsonBackPressed
方法在片段中不可用。