我想构建一个android应用程序。基本上,我有一个网站,在那里我有很多音乐分类,你可以从那里听或下载。我想使用我的应用程序来查看我的网站,我知道如何使用安卓工作室,我只需要改变一些事情。无论如何,我希望应用程序的背景/风格有所不同,我希望每次向我的网站添加新类别时,都能添加到我的应用程序中。起初,我想为每个类别制作一个按钮,但我意识到这行不通。无论如何,在应用程序中,你首先会看到的是类别,然后如果你点击其中一个,你会看到一个铃声列表,如果你点击一个铃声,你会有4个选项:设置为铃声,设置为通知,设置为警报。我知道这些东西的代码是什么,我不明白的是把它放在哪里,因为我希望我的应用程序使用我网站上的音乐,而不是把音乐作为资产然后设置它(这是我知道如何做的方式)。我知道这是多余的,但我还是个十几岁的孩子:)。我知道如何构建一个可以设置铃声的应用程序,我不知道如何为数百个我没有的铃声做这件事。有什么想法吗?也许是一个视频或一些阅读的东西
为了预览目的播放铃声,您有两个选项:您可以通过MediaPlayer类进行流式传输。这样做:
String url = "http://your-path";
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(url);
mPlayer.prepare();
mPlayer.start();
但请记住,prepare()方法可能需要一段时间,它会阻塞UI线程。您需要使用prepareSync(),并在准备好时为其设置一个侦听器。
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mPlayer.start();
}
});
但如果你也想在播放之前下载它,你可以使用这个库AQuery。如果你是android的新手,它真的可以帮助你轻松地进行http调用和异步下载。它的启动和使用如下:
AQuery aq = new AQuery(context);
File ringtoneFileToDownload = new File("http://path/to/your/online/ringtone");
aq.download(url, ringtoneFileToDownload, new AjaxCallback<File>(){
@Override
public void callback(String url, File file, AjaxStatus status) {
//method is called when the download is finished
//and the file parameter is the file downloaded
//which you can play as above with the MediaPlayer class
}
});
您可以使用上述方法将其下载到设备上,并将其保存在本地。
最后一件事是不要忘记在清单文件中添加所需的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />