【问题标题】:Trying to play background music on android app尝试在安卓应用上播放背景音乐
【发布时间】:2016-05-14 22:18:00
【问题描述】:

我目前正在尝试构建一个必须专门使用异步任务的应用程序。据我了解,无论生成的 UI 是什么,异步任务都会运行代码,但是当我看到它被实现时,它必须在 onStart、onResume 方法中实现,这些方法不可避免地与一个 Activity 相关联。不知道我是否弄错了。此外,尝试运行我的音乐播放器类,但它在声明媒体播放器时卡住了,这是从我的代码中实际有效的另一个语句的复制和粘贴。这是代码:

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);
}

}

错误是“无法解析方法'create(MusicPlayer,int)”,是的,我在原始文件夹中有'FluteMusic'

我感谢任何愿意伸出援手的人:)

【问题讨论】:

  • 如果您的目的是将音乐播放器与您的 UI 分开,(例如用户放下音乐应用程序并浏览网页),那么您应该使用 ServiceAsyncTask 似乎是一个不错的选择,但它实际上有不同的用途:)

标签: android asynchronous android-asynctask


【解决方案1】:
MediaPlayer.create(this,R.raw.FluteMusic);

返回“Cannot resolve method 'create(MusicPlayer,int)”,因为您传递的第一个元素 this 是对您的 AsyncTask 的引用,并且 MediaPlayer 类中没有将 AsyncTask 作为参数的方法.

我猜你想通过这个来做的是传递一个上下文作为参数。您可以在 AsyncTask 中有一个构造函数,以保留对 Context 的引用。

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);
}

【讨论】:

  • #legend...关于如何让它在每个活动上运行而不需要在每个活动中使用 onPause、onStop、onResume 等,我能做些什么有什么想法吗?跨度>
  • 正如 Saehun 建议的那样,对于不一定需要 UI 的后台任务,您应该查看服务:developer.android.com/guide/components/services.html
  • 唯一的问题是我被特别告知要使用异步任务。我知道使用服务的赌注,但我需要确保我使用异步任务。我有什么问题吗?我是这方面的菜鸟
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多