android studio实现音乐下载
时间: 2023-07-07 15:32:50 浏览: 56
要实现音乐下载,你需要以下几个步骤:
1. 在AndroidManifest.xml中添加网络访问权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2. 创建一个异步任务类,下载音乐文件:
```java
public class DownloadMusicTask extends AsyncTask<String, Integer, String> {
private Context mContext;
private ProgressDialog mProgressDialog;
public DownloadMusicTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setMessage("正在下载,请稍候...");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setMax(100);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
@Override
protected String doInBackground(String... params) {
String url = params[0];
String fileName = params[1];
File file = new File(Environment.getExternalStorageDirectory() + "/" + fileName);
try {
URL musicUrl = new URL(url);
URLConnection connection = musicUrl.openConnection();
connection.connect();
int fileLength = connection.getContentLength();
InputStream input = new BufferedInputStream(musicUrl.openStream());
OutputStream output = new FileOutputStream(file);
byte[] data = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int) (total * 100 / fileLength));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
return file.getAbsolutePath();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mProgressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(String filePath) {
super.onPostExecute(filePath);
mProgressDialog.dismiss();
Toast.makeText(mContext, "下载完成,文件保存在" + filePath, Toast.LENGTH_LONG).show();
}
}
```
3. 在Activity中调用异步任务类:
```java
String url = "http://example.com/music.mp3";
String fileName = "music.mp3";
DownloadMusicTask task = new DownloadMusicTask(this);
task.execute(url, fileName);
```
这样就可以实现音乐文件的下载了。请注意,这里的文件保存路径默认为SD卡根目录。如果你需要保存到其他位置,请修改代码中的路径。