Chcę przesłać URL wideo w formie wideo w widoku wideo w systemie Android. Używam kod przykładowy API i zrobić małą modyfikację w celu uzyskania że moja potrzeba kod .My jestWideo z Androidem Zobacz w innym wątku i numerze z Androidem 2.1
public class VideoViewDemo extends Activity {
private static final String TAG = "VideoViewDemo";
private String current;
/**
* TODO: Set the path variable to a streaming video URL or a local media
* file path.
*/
private String path = "http://www.boisestatefootball.com/sites/default/files/videos/original/01%20-%20coach%20pete%20bio_4.mp4";
private VideoView mVideoView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.videoview);
mVideoView = (VideoView) findViewById(R.id.surface_view);
runOnUiThread(new Runnable() {
public void run() {
playVideo();
}
});
}
private void playVideo() {
try {
// final String path = path;
Log.v(TAG, "path: " + path);
if (path == null || path.length() == 0) {
Toast.makeText(VideoViewDemo.this, "File URL/path is empty",
Toast.LENGTH_LONG).show();
} else {
// If the path has not changed, just start the media player
if (path.equals(current) && mVideoView != null) {
mVideoView.start();
mVideoView.requestFocus();
return;
}
current = path;
mVideoView.setVideoPath(getDataSource(path));
mVideoView.start();
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
}
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
if (mVideoView != null) {
mVideoView.stopPlayback();
}
}
}
private String getDataSource(String path) throws IOException {
if (!URLUtil.isNetworkUrl(path)) {
return path;
} else {
URL url = new URL(path);
URLConnection cn = url.openConnection();
cn.connect();
InputStream stream = cn.getInputStream();
if (stream == null)
throw new RuntimeException("stream is null");
File temp = File.createTempFile("mediaplayertmp", "dat");
temp.deleteOnExit();
String tempPath = temp.getAbsolutePath();
FileOutputStream out = new FileOutputStream(temp);
byte buf[] = new byte[128];
do {
int numread = stream.read(buf);
if (numread <= 0)
break;
out.write(buf, 0, numread);
} while (true);
try {
stream.close();
} catch (IOException ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
}
return tempPath;
}
}
}
Tutaj można zobaczyć używam uithread strumienia wideo .Is istnieje sposób obsłużyć to przez mój na gwint
co starałem się
new Thered(new Runnable() {
public void run() {
playVideo();
}
}).start();
ale nie udaje
a także ile działa w Androidzie 2.2 Pierwsze uruchamia kod i pokazuje mi error(-38,0)
n Android 2.1 jaki jest ten błąd? Sprawdziłem This File, ale nie mogę się dowiedzieć, jaki jest błąd?
Czy ktoś może mnie prowadzić?
Masz przycisk powiedz "Odtwarzaj wideo", aw jego funkcji klikania umieść swój kod Runnable Thread. Posiadanie własnego wątku w funkcji OnCreate() może stać się kłopotliwe, jeśli nie będzie odpowiednio obsługiwane, ponieważ tworzenie aktywności musi zawsze przebiegać poprawnie. Przy okazji, czy próbowałeś tego w emulatorze Androida lub telefonie? –
@RahulSundar próbowałem przez telefon. nie chciałem używać przycisku. Chcę odtwarzać wideo bezpośrednio po wejściu do działania. to dlatego nie użyłem żadnego przycisku – edwin
Ok. Aby sprawdzić, czy wszystko działa poprawnie z wątkiem, uruchom go za pomocą przycisku. Następnie użyj tego samego w funkcji OnCreate(). Aby upewnić się, że renderowanie wideo rozpocznie się po zakończeniu tworzenia działania, daj wystarczająco dużo czasu na sen (5 sekund) i sprawdź, czy wszystko działa poprawnie. –