java - 关于在我的 Youtube 应用程序中的 onClick 侦听器中实现方法的问题
问题描述
我正在开发一个 youtube 应用程序,在其中我已经能够像这样添加时间戳。
因此,我的下一步是通过单击 textView 以某种方式让 youtube 视频转到创建时间戳的特定时间点。
这就是我到目前为止所拥有的
package com.example.yukiv3.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.view.View;
import com.example.yukiv3.R;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.ui.views.YouTubePlayerSeekBar;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.ui.views.YouTubePlayerSeekBarListener;
import org.jetbrains.annotations.NotNull;
public class YTPlayerActivity extends AppCompatActivity {
public YouTubePlayerView ytPlayer;
public TextView videoTitle;
public int time = 0;
public TextView displayTime;
public Button button;
public YouTubePlayerSeekBar youTubePlayerSeekBar;
LinearLayout lin;
// public YTPlayerActivity(YouTubePlayerSeekBar youTubePlayerSeekBar) {
// this.youTubePlayerSeekBar = youTubePlayerSeekBar;
// }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ytplayer);
ytPlayer = findViewById(R.id.yt_player);
videoTitle = findViewById(R.id.video_title);
displayTime = findViewById(R.id.timeStamp);
youTubePlayerSeekBar = findViewById(R.id.youtube_player_seekbar);
lin = findViewById(R.id.linearLayout);
button = findViewById(R.id.button);
lin.removeAllViews();
Intent data = getIntent();
final String videoId = data.getStringExtra("video_id");
String video_title = data.getStringExtra("video_title");
ytPlayer.addYouTubePlayerListener(youTubePlayerSeekBar);
ytPlayer.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
@Override
public void onReady(@NotNull final YouTubePlayer youTubePlayer) {
youTubePlayer.loadVideo(videoId, 0);
// doesnt do anything youTubePlayer.seekTo(time);
youTubePlayerSeekBar.setYoutubePlayerSeekBarListener(new YouTubePlayerSeekBarListener() {
@Override
public void seekTo(float time) {
youTubePlayer.seekTo(time);
}
});
}
@Override
public void onCurrentSecond(@NotNull YouTubePlayer youTubePlayer, float second) {
super.onCurrentSecond(youTubePlayer, second);
displayTime.setText(String.valueOf(second));
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final TextView textView = new TextView(YTPlayerActivity.this);
textView.setText(displayTime.getText());
final EditText editText = new EditText(YTPlayerActivity.this);
Button buttonView = new Button(YTPlayerActivity.this);
buttonView.setText("clear");
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = textView.getText().toString();
final Float f = Float.parseFloat(s);
editText.setText("Hello world!");
ytPlayer.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
@Override
public void onReady(@NotNull final YouTubePlayer youTubePlayer) {
// youTubePlayer.loadVideo(videoId,0);
// doesnt do anything youTubePlayer.seekTo(time);
youTubePlayerSeekBar.setYoutubePlayerSeekBarListener(new YouTubePlayerSeekBarListener() {
@Override
public void seekTo(float time) {
youTubePlayer.seekTo(f);
}
});
}
@Override
public void onCurrentSecond(@NotNull YouTubePlayer youTubePlayer, float second) {
super.onCurrentSecond(youTubePlayer, second);
displayTime.setText(String.valueOf(second));
}
});
}
});
lin.addView(textView);
lin.addView(editText);
lin.addView(buttonView);
}
});
//this is where it would be set
videoTitle.setText(video_title);
}
}
我试图使用
youTubePlayer.seekTo(f);
方法,以便文本视图中的数字值将在上述方法中实现,但这似乎不起作用。谁能帮我这个?
解决方案
我想出了一个解决方案,
youTubePlayerSeekBar.getYoutubePlayerSeekBarListener().seekTo(f);
让我在视频中寻找所需的点
推荐阅读
- excel - 有没有办法根据两个条件激活条件格式
- ios - 如何使用命名参数为完成处理程序创建类型别名
- android - ForegroundService 无法启动 - FMX
- maven - 在池 LinuxAgent 中找不到满足指定要求的代理:maven
- swift - Alamofire 5.4 上传进度问题
- reactjs - React - Ant Design Form-Item name props 破坏了 Select 值
- material-ui - 夏令时后 DateUtils 中的问题
- ios - 标记为“allowsDirectInteraction”的视图内的直接交互(当 VoiceOver 处于活动状态时)不起作用
- azure-functions - Azure Function Poison 队列警报
- flutter - 我需要在颤动中用勾号突出显示按钮,并在颤动中淡出其他两个按钮