Voglio url di forma video in streaming nella visualizzazione di video Android. Io uso il codice di esempio api e piccola modifica fatta in quella di raggiungere il mio bisogno di codice .La mia èVideo Android Visualizza in un altro thread e problema con Android 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;
}
}
}
Qui potete vedere sto usando uithread per lo streaming video .IS Esiste un modo per gestire questo dalla mia sul filo
quello che ho provato è
new Thered(new Runnable() {
public void run() {
playVideo();
}
}).start();
ma non riesce
e anche durante l'esecuzione di Android 2.2 Le piste primo codice e si vede error(-38,0)
i n Android 2.1 qual è questo errore ?? Ho controllato This File ma non riesco a scoprire quale errore è questo ??
Qualcuno può Guidarmi ??
Avere un pulsante dire "Riproduci video" e nella sua funzione di clic posizionare il codice Runnable Thread. Avere il proprio thread nella funzione OnCreate() potrebbe diventare disordinato se non gestito correttamente in quanto la creazione dell'attività deve andare sempre bene. A proposito, l'hai provato con l'emulatore Android o il telefono? –
@RahulSundar ho provato al telefono. non volevo usare il pulsante. desidero riprodurre il video direttamente quando entro in attività. ecco perché non ho usato alcun tasto – edwin
Ok. Solo per verificare se tutto funziona correttamente con il thread, avviarlo da un pulsante. Quindi utilizzare lo stesso nella funzione OnCreate(). Per assicurarti che il rendering del video inizi dopo il completamento della creazione dell'attività, concediti un tempo di sospensione sufficiente (5 secondi) e verifica se tutto funziona correttamente. –