2012-10-08 5 views
1

첫 번째 앱을하고 있습니다. .mp3을 벨소리로 설정하려면 버튼을 넣고 싶습니다. , Logcat 일식 doens't 어떤 종류의 오류 표시하지만 전화를 할 때 (에뮬레이터 및 실제 휴대 전화) 소리가 나지 않습니다! 또한 "음악"앱으로 이동하여 벨소리를 재생하려고 할 때 ("최근에 추가됨"에서 해당 노래를 찾음) 다음과 같이 표시됩니다. "죄송합니다. 플레이어가 오디오 파일 유형을 지원하지 않습니다."Android : 벨소리를 설정할 때마다 괜찮아요. 소리가 나지 않아 재생할 수 없습니다.

내가 뭘 잘못하고있어?

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

을 음악 "응용 프로그램에"내가 갈 때 "보인다 다음 포스트에서 살펴해야 그 벨소리를 연주하려고합니다 ("최근에 추가됨"에서 찾음). "죄송합니다. 플레이어가 오디오 파일 유형을 지원하지 않습니다." "다른 음악 파일을 시도해야합니까? 읽으려는 형식이 시스템을 준수하는지 확인하십시오? 음악 플레이어를 사용하여 읽을 수 없다면 코드가 정상적으로 작동하지 않는 것 같습니다. 웹에서 임의의 mp3를 선택하고 대신 사용하십시오. –

+0

시도해 보겠습니다. 아마도 .mp3 파일의 비트 전송률을 조정하면 작동 할 수 있습니다. – Jacobo

+0

글쎄, 내 애플 리케이션은 또한 "재생"버튼을 가지고 그것을 누르면 .mp3 파일이 정상적으로 소리, 그 이유는 내 .mp3 파일이 손상된 것 같지 않습니다. 나는 무엇을 해야할지 모르겠다 = ( – Jacobo

답변