Uri ringtoneUri= RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_NOTIFICATION); Ringtone ringtone=RingtoneManager.getRingtone(getApplicationContext(),ringtoneUri); ringtone.play();Questo suona la suoneria di tipo NOTIFICATION.
Esistono anche altri tipi:
Uri ringtoneUri= RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_ALARM); Ringtone ringtone=RingtoneManager.getRingtone(getApplicationContext(),ringtoneUri); ringtone.play();Questo invee suona la suoneria di tipo ALARM (che non la smette più!)
Andiamo a vedere l'altro tipo:
Uri ringtoneUri= RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_RINGTONE); Ringtone ringtone=RingtoneManager.getRingtone(getApplicationContext(),ringtoneUri); ringtone.play();Questo suona la suoneria telefonica.
C'è poi il capitolo della scelta della suoneria personalizzata per l'applicazione, che non ricordo.
Rinfreschiamo la memoria...
Ci si avvale di SharedPreferences.
Se non è stato salvato niente, ossia se la stringa ripescata da SharedPreferences è vuota, si usa la suoneria di default, altrimenti si Uri.parsa la stringa reperita in SharedPreferences.
Devo definire, però SharedPreferences.
SharedPreferences SP; ..... SP=getApplicationContext().getSharedPreferences("suoneria",Context.MODE_PRIVATE);Fatto questo, torno a modificare il codice che stabilisce la suoneria:
SP=getApplicationContext().getSharedPreferences("suoneria",Context.MODE_PRIVATE); Uri ringtoneUri; Ringtone ringtone=null; String strSuoneria=SP.getString("suoneria",""); if(TextUtils.isEmpty(strSuoneria)){ ringtoneUri= RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_NOTIFICATION); }else{ ringtoneUri=Uri.parse(strSuoneria); } ringtone=RingtoneManager.getRingtone(getApplicationContext(),ringtoneUri); ringtone.play();Il discorso è semplice.
E funziona.
Ora devo provvedere una sezione per la scelta della suoneria.
Creo un'activity Settings per la regolazione di questa e altre funzioni, raggiungibile tramite menu.
Ecco l'XML del menu di MainActivity modificato:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/stopTimer" android:title="Stop Timer"> </item> <item android:id="@+id/showSettings" android:title="Impostazioni" > </item> </menu>Ed ecco il menu in MainActivity modificato:
@Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); MenuInflater inflater=this.getMenuInflater(); inflater.inflate(R.menu.miomenu,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem menuItem){ switch(menuItem.getItemId()){ case R.id.stopTimer: cancellaTimer(); break; case R.id.showSettings: Intent i=new Intent(MainActivity.this,Settings.class); startActivity(i); } return true; }E in Settings possiamo scrivere il codice per la scelta delle suonerie.
Prima l'intent:
bttSceltaSuoneria.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); startActivityForResult(intent,0); } });(subordinato a un Button)
Quindi onActivityResult:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data){ Uri uri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); SharedPreferences.Editor editor=SP.edit(); editor.putString("suoneria",uri.toString()); editor.commit(); }E vediamo se combina... Comunque ho fatto una faticaccia a scrivere questo codice, completamente dimenticato.
Nessun commento:
Posta un commento