2012-10-08 54 views
1

我正在做我的第一個應用程序:我想放一個按鈕以便將.mp3設置爲鈴聲,everythig可以正常工作,Logcat日食doens't不顯示任何類型的錯誤,但是當我撥打電話(在模擬器和真正的手機),它聽起來不對!另外,當我去「音樂」應用程序,並嘗試播放這些鈴聲(我發現他們在「最近添加」)它顯示這個:「對不起,播放器不支持類型的音頻文件」。Android:設置鈴聲,everythig可以,但不會發出聲音,但無法播放

我在做什麼錯了?

這裏是我的代碼:

setringtone.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
         Toast msg = Toast.makeText(TonosSet.this, "Sound set as ringtone!", Toast.LENGTH_LONG); 
         msg.show(); 

         File k = new File("/sdcard/media/ringtone", "song_file.mp3"); 
         Uri mUri = Uri.parse("android.resource://com.app/"+R.raw.song_file); 
         ContentResolver mCr = getContentResolver(); 
         AssetFileDescriptor soundFile; 
         try { 
          soundFile= mCr.openAssetFileDescriptor(mUri, "r"); 
         } catch (FileNotFoundException e) { 
          soundFile=null; 
         } 

         try { 

          InputStream ins = TonosSet.this .getResources().openRawResource (R.raw.song_file); 
            byte[] buffer = new byte[ins.available()]; 
            ins.read(buffer); 
            ins.close(); 
            String filename = Environment.getExternalStorageDirectory().toString()+File.separator+R.raw.song_file; 
            FileOutputStream fos = new FileOutputStream(filename); 
            fos.write(buffer); 
            fos.close(); 
         } catch (IOException io) { 
         } 

         ContentValues values = new ContentValues(); 
         values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
         values.put(MediaStore.MediaColumns.TITLE, "Name sound"); 
         values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
         values.put(MediaStore.Audio.Media.ARTIST, "Artist"); 
         values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
         values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); 
         values.put(MediaStore.Audio.Media.IS_ALARM, true); 
         values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

         //Insert it into the database 
         Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 

         getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); 

         Uri newUri = getContentResolver().insert(uri, values); 

         RingtoneManager.setActualDefaultRingtoneUri(
          TonosSet.this, 
          RingtoneManager.TYPE_NOTIFICATION, 
          newUri); 

      } 
      }); 

請幫助我,我不知道該怎麼辦,我一直在尋找約5小時的解決方案是什麼,但我不能=(

+0

「當我去‘音樂’應用程序的d嘗試播放這些鈴聲(我在「最近添加」中找到它們),它表明:「對不起,播放器不支持類型的音頻文件」。「也許你應該嘗試另一個音樂文件?您確定您嘗試閱讀的格式符合系統嗎?如果你不能使用音樂播放器閱讀它,你的代碼似乎不正常。在網上挑選一個隨機的mp3,然後使用它。 –

+0

我會嘗試,也許如果我chage我的.mp3文件的比特率,它可以工作。 – Jacobo

+0

那麼,我的應用程序也有一個「播放」按鈕,當我正常按下.mp3文件聲音時,這就是爲什麼我不認爲我的.mp3文件被損壞或類似的東西。我不知道該怎麼辦=( – Jacobo

回答