【问题标题】:How to get Artist ,Album in Media Player For API LEVEL 2.2如何在 API LEVEL 2.2 的媒体播放器中获取艺术家、专辑
【发布时间】:2012-01-27 10:25:05
【问题描述】:

我是安卓新手。我正在开发基于媒体播放器的应用程序。 我的问题是如何获取正在播放的歌曲的艺术家、歌曲时长、专辑等。 我见过 android.media.RemoteControlClient.MetadataEditor 类,但包含在 Api 14 中。如果您有任何想法,请建议

提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    学习以下内容

    http://developer.android.com/reference/android/media/MediaPlayer.html http://developer.android.com/reference/android/provider/MediaStore.Audio.html

    在第二个音频类中包含专辑、艺术家等类。通过使用它们,您可以找到专辑艺术家等。

    【讨论】:

      【解决方案2】:

      您需要使用MediaMetadataRetriever。

      例子:

      myUri = Uri.parse("android.resource://your.package.name/" + R.raw.yourSoundFile);
      retriever = new MediaMetadataRetriever();
      retriever.setDataSource(this, myUri);
      album = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
      Toast.makeText(this,album , Toast.LENGTH_SHORT).show();
      

      其他字段可以在javadoc中找到,如:

      • METADATA_KEY_ALBUMARTIST
      • METADATA_KEY_ARTIST
      • METADATA_KEY_AUTHOR

      【讨论】:

        【解决方案3】:

        为此,您可以使用content provider 查询media store 并从那里对表进行任何类型的修改。

        一个完整的好例子:

        //Some audio may be explicitly marked as not being music
        String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
        
        String[] projection = {
            MediaStore.Audio.Media._ID,
            MediaStore.Audio.Media.ARTIST,
            MediaStore.Audio.Media.TITLE,
            MediaStore.Audio.Media.DATA,
            MediaStore.Audio.Media.DISPLAY_NAME,
            MediaStore.Audio.Media.DURATION
        };
        
        cursor = this.managedQuery(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            projection,
            selection,
            null,
            null);
        
        private List<String> songs = new ArrayList<String>();
        while(cursor.moveToNext()){
            songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" +   cursor.getString(2) + "||" +   cursor.getString(3) + "||" +  cursor.getString(4) + "||" +  cursor.getString(5));
        }
        // see http://androidsnippets.com/list-all-music-files
        

        【讨论】:

        • 感谢回复,但如果我通过流媒体播放歌曲
        • @Ankit - managedQuery是Activity Class的方法,根据Activity的生命周期来管理光标。
        • 我无法在片段中得到它
        • @Ankit - 仅适用于活动类。因此,您可以在 FragmentActivity 或 Fragment 中使用getActivity().managedQuery(); 访问它
        • 嗯,谢谢你的信息,但我用的是媒体元数据......你能再回答一个简单的问题吗???它是简单的排序? stackoverflow.com/questions/12986386/…
        猜你喜欢
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        相关资源
        最近更新 更多