【问题标题】:How to update media player to play new file如何更新媒体播放器以播放新文件
【发布时间】:2012-12-18 09:30:17
【问题描述】:

我有一段代码如下所示,用于获取存储在内容提供程序数据库中的 mp3 音频文件的路径名。接下来,它使用此路径名加载 mp3 文件并开始播放。问题是,如果我得到不同的路径名并点击暂停或播放,它会继续播放相同的旧音频文件,而不是新文件。解决此问题的最佳方法是什么?

      String pathName; // pathname of audio file stored in SD card
      String selection = MediaStore.Images.Media.DATA + "='" + pathName +"'";
      String[] projection = { MediaStore.Images.Media.LATITUDE };
      cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);

      if(cursor!=null){
         cursor.moveToFirst();
        }
        musicName = (String) cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.LATITUDE));

         Toast.makeText(AudioService.this, "from AUDIOSERVICE CLASS music name: " + musicName, Toast.LENGTH_SHORT).show();

         cursor.close();    

         player.setDataSource(musicName);

        player.prepare();

        player.start();

        }

【问题讨论】:

    标签: android media-player updates


    【解决方案1】:

    检查路径是否相同,然后再次播放相同的文件,如果文件路径不同,则首先重置媒体播放器,然后播放新文件,将代码更改为:

          String pathName=""; // pathname of audio file stored in SD card
           public static String musicName="";
          String selection = MediaStore.Images.Media.DATA + "='" + pathName +"'";
          String[] projection = { MediaStore.Images.Media.LATITUDE };
          cursor = getContentResolver().query(MediaStore.Images.
                 Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);
    
          if(cursor!=null){
             cursor.moveToFirst();
            }
    
    if(musicName.length()==0){
             musicName = (String) cursor.getString(cursor.getColumnIndex(
                                          MediaStore.Images.Media.LATITUDE));
    
             Toast.makeText(AudioService.this, 
                                        "from AUDIOSERVICE CLASS music name:
                                          " + musicName, Toast.LENGTH_SHORT).show();
    
             cursor.close();    
    
             player.setDataSource(musicName);
    
            player.prepare();
    
            player.start();
    
      }
    else{
     String musicNametemp = (String) cursor.getString(cursor.getColumnIndex(
                                              MediaStore.Images.Media.LATITUDE));
    
    if(musicNametemp.equals(musicName)){
    
    ///play old music here
    }
    
    else{
    //reset mediaplayer here
    
    if(player !=null){
     player.reset();
     player.release();
     player = new MediaPlayer();
    
    }
    cursor.close();    
    musicName=musicNametemp;
    player.setDataSource(musicName);
    
    player.prepare();
    
    player.start();
    }
    
    }
    

    【讨论】:

    • 好主意,我可能会使用某种更改侦听器来检查变量的值是否已更改
    • @Kevik : 是的,只需使用另一个变量来检查文件路径是否相同并根据路径重置 MediaPlayer 实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多