Разве это не VideoView's getCurrentPosition()
, что вы ищете?
Чтобы изменить содержимое вашего TextView (или того, что вы хотите использовать), я бы установил таймер с достаточной частотой для обновленияваш "субтитр".Его TimerTask может получить время воспроизведения с помощью этого getCurrentPosition () и использовать карту для хранения значений сообщений и времени в качестве ключа.
Вот это и пример того, о чем я думаю:
00 - «Видео начинается!»
05 - «что-то смешное происходит»
12 - «Видео заканчивается!»
class MySubtitlePoster extends TimerTask{
private VideoView video;
private TreeMap <Integer, String> messages; // populate it somewhere
public MySubtitlePoster(VideoView v) {
video = v;
}
public void run() {
int videoPos = video.getCurrentPosition();
String messageToDisplay = messages.floorKey(new Integer(videoPos));
// If all this is right, now you can get the message and post it, probably using a Handler
}
}
=========================================
После просмотра вашего полного кода я могу дать вам более подробные советы, но программирование - это ваша работа, поэтому...
Для создания карты:
messages = new TreeMap();
messages.put(new Integer(0), getString(R.string.one));
messages.put(new Integer(20), getString(R.string.two));
...
messages.put(new Integer(62), getString(R.string.four));
Для выполнения работы:
public void doWork(){
runOnUiThread(new Runnable() {
public void run() {
try{
mText = (TextView)findViewById(R.id.SetText);
//If it returns milliseconds, divide by 1000
int playTime = mVideoView.getCurrentPosition();
String textValue = messages.ceilingEntry(new Integer(playtime)).getValue();
mText.setText(textValue);
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
И, наконец, вместо этого используйте Таймер об этом ( Здесь есть статья о таймерах и пользовательском интерфейсе ):
public void run()
{
while(!Thread.currentThread().isInterrupted())
{
try
{
doWork();
Thread.sleep(1000);
}catch (InterruptedException e)
{
Thread.currentThread().interrupt();
e.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
Это действительно уродливо и неэффективно.
Итак, удачного кодирования, и, пожалуйста, есливы обнаруживаете некоторую неточность, пытаясь решить ее самостоятельно, не потому, что я не любезен помогать, но это ваш лучший шанс улучшить свои навыки.
С уважением, Мануэль.