2016-05-14 2 views
0

現在、特に非同期タスクを使用する必要があるアプリを作成しようとしています。私が理解していることから、非同期タスクは生成されているUIに関係なくコードを実行しますが、実装されるのを見ると、onStart、onResumeメソッドで実装する必要があります。私がこれを間違っているかどうかは分かりません。また、Music Playerクラスのクラスを実行しようとしましたが、Media Playerの宣言に固執しています。これは実際に動作するコードから別のステートメントのコピー&ペーストです。ここでのコードは次のとおりです。アンドロイドアプリでバックグラウンドミュージックを再生しようとしています

package mt.edu.mcast.clickermaster; 

import android.media.MediaPlayer; 
import android.os.AsyncTask; 

public class MusicPlayer extends AsyncTask<Void, Void, Void>{ 

@Override 
protected void onPreExecute(){ 
    super.onPreExecute(); 
} 

@Override 
protected Void doInBackground(Void... params) { 
    MediaPlayer player = MediaPlayer.create(this,R.raw.FluteMusic); 
    player.setLooping(true); 
    player.setVolume(1.0f,1.0f); 
    player.start(); 
    return null; 
} 

@Override 
protected void onPostExecute(Void result){ 
    super.onPostExecute(result); 
} 

}

エラーは、 "「(MusicPlayer、int)を作成し、はい、私が持っているメソッドを解決できません" '言っているFluteMusic' 生のフォルダに

私は手を貸すだろう誰に感謝:)

+0

音楽プレーヤーをUIから分離する(ユーザーが音楽アプリをダウンロードしてウェブをブラウズするような)場合は、「サービス」を使用する必要があります。 'AsyncTask'は良い選択だと思われるかもしれませんが、実際には別の目的を果たしています:) –

答えて

0
MediaPlayer.create(this,R.raw.FluteMusic); 

リターン「メソッドを解決できません「(MusicPlayer、int)を作成する」this、あなたが渡す最初の要素ためには、参照トンですoあなたのAsyncTask。AsyncTaskをパラメータとして取るメソッドはMediaPlayerクラスにはありません。

私があなたがこれを置くことによってしようとしているのは、Contextをパラメータとして渡すことです。 Contextへの参照を保持するために、AsyncTaskにコンストラクタを持たせることができます。

public class MusicPlayer extends AsyncTask<Void, Void, Void>{ 

Context mContext; 

public MusicPlayer(Context context){ 
    mContext = context; 
} 

@Override 
protected void onPreExecute(){ 
    super.onPreExecute(); 
} 

@Override 
protected Void doInBackground(Void... params) { 
    MediaPlayer player = MediaPlayer.create(mContext, R.raw.FluteMusic); 
    player.setLooping(true); 
    player.setVolume(1.0f,1.0f); 
    player.start(); 
    return null; 
} 

@Override 
protected void onPostExecute(Void result){ 
    super.onPostExecute(result); 
} 
+0

#legend ... onPauseを使用することなく、どのアクティビティでどのように動作させることができるか、 onStop、onResumeなど、すべてのアクティビティで使用できますか? Saehun氏のように –

+0

が示唆したように、必ずしもUIを必要としないバックグラウンドタスクについては、サービスを参照する必要があります。http://developer.android.com/guide/components/services.html – Gauthier

+0

問題は、Async仕事。私はサービスを使うというベットを知っていますが、私は非同期タスクを使用していることを確認する必要があります。何か間違っていますか?私はこれのノブです –

関連する問題