Android 检测正在播放的视频并更新textview的UI
我对同一活动有视频视图和文本视图。这里是布局的xmlAndroid 检测正在播放的视频并更新textview的UI,android,android-videoview,Android,Android Videoview,我对同一活动有视频视图和文本视图。这里是布局的xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rellayout" android:layout_width="match_parent" android:layout_height="match_parent" > <VideoView
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rellayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<VideoView
android:id="@+id/videoview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:padding="5dp" />
<TextView
android:id="@+id/numberTicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/purple"
android:textStyle="bold"
android:gravity="top|right"
android:textSize="35dp"
android:maxEms="3"/>
</RelativeLayout>
可运行的代码只运行一次,永远不会更新。
我错过什么了吗
谢谢你的帮助 您将在
onPrepared()
中获得一个MediaPlayer
对象。你可以这样使用:
vid.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
this.mediaPlayer = mp; //have mediaPlayer be a class variable
vid.start();
vid.postDelayed(onEveryQuarterSecond,250);
}
});
private Runnable onEveryQuarterSecond = new Runnable() {
Random r = new Random();
int uVal, aVal;
@Override
public void run() {
while(mediaPlayer.isPlaying()) {
ratings.setText(Integer.toString(r.nextInt()));
Thread.sleep(250);
}
}
};
考虑使用新线程以不阻止主UI线程:
public void updateEverySecond() {
new Thread(new Runnable() {
@Override
public void run() {
while (mediaPlayer.isPlaying()) {
try {
ratings.setText(Integer.toString(r.nextInt()));
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
public void updateEverySecond() {
new Thread(new Runnable() {
@Override
public void run() {
while (mediaPlayer.isPlaying()) {
try {
ratings.setText(Integer.toString(r.nextInt()));
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}