2015-04-24 5 views
0

Я написал эту простую Main.java и должен знать, как использовать простые коды для установки soundpool или mediaplayer в качестве мелодии звонка. Прямой вопрос: Уст кнопкой «b2»Как использовать кнопку для установки звука в качестве мелодии звонка в Android?

Есть несколько источников в StackOverflow, но я не мог понять ни одного из них. заранее спасибо

Мои коды:

public class Main extends Activity implements OnClickListener{ 

SoundPool sp; 
int dicesound; 
Button play, setAsRingtone; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); 
    dicesound = sp.load(this, R.raw.onedice, 1); 
    play = (Button) findViewById(R.id.b1); 
    setAsRingtone = (Button) findViewById(R.id.b2); 
    play.setOnClickListener(this); 
    setAsRingtone.setOnClickListener(this); 
} 
@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()){ 

    case R.id.b1: 
     sp.play(dicesound, 1, 1, 0, 0, 1); 
     break; 

    case R.id.b2: 
     // HOW TO SET "dicesound" SOUND AS A RINGTONE ??? 
     break; 
    } 
} 

}

+0

проверьте эту ссылку http://stackoverflow.com/questions/1271777/how-to-set-ringtone-in-android-from-my-activity – umerk44

+1

Pleas e проверить эту ссылку. здесь объясняется бросить красиво http://stackoverflow.com/questions/1271777/how-to-set-ringtone-in-android-from-my-activity –

ответ

0

Прежде всего, вам нужно скопировать свой звуковой файл (RAW файл на карту памяти) к муравью SD Card затем используется следующий код в качестве мелодии звонка .:

String filepath ="/sdcard/myring.mp3"; 
File ringtoneFile = new File(filepath); 



//To set a ringtone you have to add it to the database. 

// в противном случае он не будет установлен также не дает ошибок.

ContentValues content = new ContentValues(); 
content.put(<span id="IL_AD7" class="IL_AD">MediaStore</span>.MediaColumns.DATA,ringtoneFile.getAbsolutePath()); 
content.put(MediaStore.MediaColumns.TITLE, "test"); 

content.put(MediaStore.MediaColumns.SIZE, 215454); 

content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*"); 

content.put(MediaStore.Audio.Media.ARTIST, "artist"); 

content.put(MediaStore.Audio.Media.DURATION, 230); 

content.put(MediaStore.Audio.Media.IS_RINGTONE, true); 

content.put(MediaStore.Audio.Media.IS_NOTIFICATION, <span id="IL_AD4" class="IL_AD">false</span>); 

content.put(MediaStore.Audio.Media.IS_ALARM, false); 

content.put(MediaStore.Audio.Media.IS_MUSIC, false); 

Вставьте его в базу данных

Log.i(TAG, "the absolute path of the file is :"+ringtoneFile.getAbsolutePath()); 
Uri uri = MediaStore.Audio.Media.getContentUriForPath(
ringtoneFile.getAbsolutePath()); 

Uri newUri = context.getContentResolver().<span id="IL_AD5" class="IL_AD">insert</span>(uri, content); 

ringtoneUri = newUri; 

Log.i(TAG,"the ringtone uri is :"+ringtoneUri); 

RingtoneManager.setActualDefaultRingtoneUri(context, 
RingtoneManager.TYPE_RINGTONE,newUri); 
+0

Я попытался это: «Ури ringtoneUri = Uri. синтаксического анализа ("/ SDCard/медиа/аудио/мелодии/onedice.mp3"); \t \t \t RingtoneManager.setActualDefaultRingtoneUri (Main.this, RingtoneManager.TYPE_RINGTONE, ringtoneUri); \t \t \t мелодии ВУ = RingtoneManager.getRingtone (Основной. это, ringtoneUri); \t \t \t rt.play(); – Civiato

+0

Но он просто воспроизводит текущую мелодию звонка и не заменит ее новым один. – Civiato

+0

Я думаю, проблема с адресом. – Civiato

1

Пожалуйста, проверьте ниже код, надеюсь, это поможет вам

Заменить "com.example.sample" с именем пакета

Uri m_path = Uri.parse("android.resource://com.example.sample/" + R.raw.onedice); 
RingtoneManager.setActualDefaultRingtoneUri(activity.this,RingtoneManager.TYPE_RINGTONE, m_path); 
+0

Я сделал это, но это не сработает. Я также добавил эти разрешения: – Civiato

+0

\t Civiato

+0

Мое устройство не внедрено. может быть, это и есть причина! – Civiato