2016-07-12 19 views
0

私の質問はこれです、私は私のメインクラスを持っています、彼女は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を持っていますか?

+0

TextViewを引数として 'playAudio'メソッドに渡します。 –

+0

は動作しません。:(W/System.err:android.view.ViewRootImpl $ CalledFromWrongThreadException:ビュー階層を作成した元のスレッドのみがそのビューに触れることができます。 –

答えて

1

の内側に、私はあなたが別のアクティビティでのTextViewを更新したい場合は、以下のいくつかの解決策を持っていると思う:

1 - インターフェイスリスナキャッチイベント変更のオーディオを作成してTextViewを更新します。

2 - ブロードキャスト受信機を使用します。

3 - ハンドラメッセージを使用します。

0

あなたAcitivityの内部AsyncTask(内部クラス)を作成し、(.setTexを呼び出す)onPostExecute()メソッド

関連する問題