私の質問はこれです、私は私のメインクラスを持っています、彼女はURLオーディオでAyncTaskを実行するコマンドを、最後に私の質問は、私の質問は、私はそうするように、別のクラスのプレーヤーを持ってrepreduceこれは再生する曲のURLを実現するたびに更新されますか?ここ 私のコード:メイン[Android] asynctaskで実行中の別のクラスのテキストビューを更新しますか?
活動: AsyncTask
public class Repoduce extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
//mostrarNotificacion("Reproduciendo...");
}
@Override
protected String doInBackground(String... strings) {
String url = strings[0];
try {
PlayAudioManager.playAudio(getApplicationContext(), url, Lista);
runOnUiThread(new Runnable() {
@Override
public void run() {
//titulo.setText(guardaDatos.getArtista());
titulo_cancion.setText(guardaDatos.getArtista());
Picasso.with(getApplicationContext()).load(guardaDatos.getCoverURL()).into(caratula);
}
}
);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
ここでは、メディアプレーヤー
public static void playAudio(final Context context, final String url, String currentTrack) throws Exception {
mmr = new FFmpegMediaMetadataRetriever();
listaReproduccion a = new listaReproduccion(context);
//am = MusicPlayer.getAm();
//am.setMode(AudioManager.STREAM_MUSIC);
codigos = a.getArray("Codigos");
nombres = a.getArray("Nombres");
artista = a.getArray("Artista");
//guardaDatos.setArtista(nombres.get(cancion));
setIsPlaying(true);
mediaPlayer = MediaPlayer.create(context, Uri.parse(codigos.get(cancion)));
//coverDeezer.caratulaArtista(artista.get(cancion));
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (cancion <= codigos.size()) {
try {
cancion++;
playAudio(context, "", "lista");
Log.i("CONTADOR2", String.valueOf(cancion));
} catch (Exception e) {
e.printStackTrace();
}
}
を持つクラスIは自動的にクラスのプレーヤーからこれを更新する方法、activityclassでのTextViewを持っていますか?
TextViewを引数として 'playAudio'メソッドに渡します。 –
は動作しません。:(W/System.err:android.view.ViewRootImpl $ CalledFromWrongThreadException:ビュー階層を作成した元のスレッドのみがそのビューに触れることができます。 –