Android: кнопка добавления в YouTubePlayerView
Я хочу добавить кнопку в YouTubePlayerView, но не знаю, как это сделать. Я хотел бы, чтобы кнопка присутствовала только тогда, когда пользователь нажимает на экран, чтобы вызвать элементы управления YouTube (воспроизведение / пауза, временная шкала, доля и т. Д.), Которые исчезают через несколько секунд, как только элементы управления исчезают. Я посмотрел на ViewGroupOverlay, но не уверен, что это лучший способ сделать это, и я не уверен, как добавить кнопку в оверлей, только когда доступны элементы управления. Такое чувство, что мне нужно переопределить одну из функций YouTubePlayer или YouTubePlayerView, чтобы знать, когда элементы управления видны, но я просто выдвигаю здесь гипотезу. Я относительно новичок в Android, и это было давно, так как я сделал что-то серьезное в Java. Любое направление здесь было бы замечательно, если бы другие не знали точного ответа. Я посмотрел около 2 часов, прежде чем отправлять это:)
package com.example.something.exampletube;
import android.os.Bundle;
import android.view.ViewGroupOverlay;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
/**
* Created by Nicholas Dwyer on 4/17/2015.
* This class is used to play youtube videos
*/
public class PlayerActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
YouTubePlayerView playerView;
ViewGroupOverlay groupOverlay;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_player);
playerView = (YouTubePlayerView) findViewById(R.id.player_view);
playerView.initialize(YoutubeConnector.KEY, this);
groupOverlay = playerView.getOverlay();
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean restored) {
if(!restored) {
youTubePlayer.cueVideo(getIntent().getStringExtra("VIDEO_ID"));
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
String errorMessage = "There was an error initializing the YouTubePlayer" + youTubeInitializationResult.toString();
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
//Toast.makeText(this,getString(R.string.failed), Toast.LENGTH_LONG).show();
}
}
2 ответа
Невозможно добавить кнопки в качестве оверлеев над плеером, как указано Google:
Обратите внимание, что во время воспроизведения видео этот просмотр имеет минимальный размер 200x110 dp. Если вы уменьшите размер, видео автоматически прекратит воспроизведение. Кроме того, не разрешается накладывать вид на другие виды во время воспроизведения видео.
Смотрите также здесь Можно ли наложить некоторые виды на YouTube Android Player?
Если какой-либо вид частично перекрывается (или YouTubeVideoView только частично прокручивается за пределами видимого экрана), видео останавливается примерно через одну секунду. Google предположительно делает это, чтобы предотвратить злоупотребление видео для рекламы за пределами YouTube.
Альтернативы: используйте WebView и вставьте его.
Вместо добавления кнопки в качестве слоя над проигрывателем вы можете добавить ее ВНУТРИ проигрывателя:
Button b = new Button(this);
b.setBackgroundResource(R.drawable.close);
((ViewGroup)((ViewGroup) youTubePlayerView.getChildAt(0)).getChildAt(0)).addView(b);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
Работаю на меня.
Другой хорошей альтернативой является использование Exoplayer, чтобы наложить ваше видео на просмотр. Он не является частью Android SDK, но рекомендуется Google и включен в документацию для разработчиков Android:
http://google.github.io/ExoPlayer/ https://developer.android.com/guide/topics/media/exoplayer.html
Exoplayer позволяет вам транслировать любое видео, не только видео Youtubes.
Также стоит упомянуть, что Exoplayer используется в приложении Youtube.