2016-11-30 2 views
0

Ich verwende den folgenden Code, aber es scheint nicht den Klingelton zu ändern. Was mache ich falsch oder gibt es eine einfachere Möglichkeit, einen mp3-Klingelton zu klingeln? Ich habe eine uri, die den Ort analysiert, und ich rufe die folgende Funktion auf. Ich weiß, dass das uri korrekt ist, weil es richtig mit einer Dateifreigabe-Methode funktioniert, die ich habe.Wie wird der Klingelton in Android mit dem Klingeltonmanager eingestellt?

private void setRingtone(Uri uri) { 
     AssetFileDescriptor openAssetFileDescriptor; 
     ((AudioManager) getActivity().getSystemService(AUDIO_SERVICE)).setRingerMode(2); 
     File file = new File(Environment.getExternalStorageDirectory() + "/appkeeda", mp3s[position]); 
     if (!file.getParentFile().exists()) { 
      file.getParentFile().mkdirs(); 
     } 
     if (!file.exists()) { 
      try { 
       file.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     ContentResolver contentResolver = getActivity().getContentResolver(); 
     try { 
      openAssetFileDescriptor = contentResolver.openAssetFileDescriptor(uri, "r"); 
     } catch (FileNotFoundException e2) { 
      openAssetFileDescriptor = null; 
     } 
     try { 
      byte[] bArr = new byte[1024]; 
      FileInputStream createInputStream = openAssetFileDescriptor.createInputStream(); 
      FileOutputStream fileOutputStream = new FileOutputStream(file); 
      for (int read = createInputStream.read(bArr); read != -1; read = createInputStream.read(bArr)) { 
       fileOutputStream.write(bArr, 0, read); 
      } 
      fileOutputStream.close(); 
     } catch (IOException e3) { 
      e3.printStackTrace(); 
     } 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put("_data", file.getAbsolutePath()); 
     contentValues.put("title", "nkDroid ringtone"); 
     contentValues.put("mime_type", "audio/mp3"); 
     contentValues.put("_size", Long.valueOf(file.length())); 
     contentValues.put("artist", Integer.valueOf(R.string.app_name)); 
     contentValues.put("is_ringtone", Boolean.valueOf(true)); 
     contentValues.put("is_notification", Boolean.valueOf(false)); 
     contentValues.put("is_alarm", Boolean.valueOf(false)); 
     contentValues.put("is_music", Boolean.valueOf(false)); 
     try { 
      //Toast.makeText(this, new StringBuilder().append("Ringtone set successfully"), Toast.LENGTH_LONG).show(); 
      RingtoneManager.setActualDefaultRingtoneUri(getActivity().getBaseContext(), 1, contentResolver.insert(MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath()), contentValues)); 
     } catch (Throwable th) { 
      //Toast.makeText(this, new StringBuilder().append("Ringtone feature is not working"), Toast.LENGTH_LONG).show(); 
     } 
    } 
+0

siehe http://stackoverflow.com/questions/1271777/how-to-set-ringtone-in-android-from-my-activity – sasikumar

+0

funktioniert nicht, aber danke, ich denke, der Code könnte veraltet sein –

Antwort

Verwandte Themen