因此,在我的应用程序中,我想通过WiFi将本地音频流的功能添加到连接的对等设备。我正在关注this tutorial for audio streaming over WiFi.这是完美的。但问题是,我要明确指定我想要流式传输的文件名和确切路径。
在我的应用程序中,我使用Media Store
在用户设备上获取音乐。因此,每个媒体项目都没有可用的路径。即使我可以获得每个媒体项目的确切路径,问题是寻求所需的时间。另一个问题是当一首歌完成并且其他歌曲开始时我将重新启动所有流线程。
所以我的想法是通过WiFi传播媒体播放器本身的内容。这样就不会有寻求或更新线程的问题。当主机寻求所需时间时,所有设备都将自动接收更新,因为我们现在正在流媒体播放器本身的内容。
我在Google上搜索过此内容,我得到的只是MediaPlayer.setDataSource()
方法。这与我的情况正好相反。在Media Player
的官方Android文档中也没有提到这样的事情。
作为参考,我使用以下方法使用媒体商店获取歌曲列表。
public void getSongList() {
//retrieve song info
ContentResolver musicResolver = getActivity().getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
//iterate over results if valid
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
int albumId = musicCursor.getColumnIndex
(MediaStore.Audio.Media.ALBUM_ID);
int data= musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
int albumkey=musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_KEY);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
long thisalbumId = musicCursor.getLong(albumId);
String thisdata= musicCursor.getString(data);
String AlbumKey = musicCursor.getString(albumkey);
tempSongList.add(new Song(thisId, thisTitle, thisArtist, thisalbumId, thisdata, AlbumKey));
}
while (musicCursor.moveToNext());
}
}
我知道我可以从中获得确切的路径。 Here is the answer.
但我想要传播媒体播放器本身的内容。有可能吗?这个功能有替代品吗?