JavascriptProva

domenica 6 novembre 2016

Aggiunta di una suoneria e codice per l'impostazione di una suoneria personalizzata.

Riscriviamo un codice che suoni la suoneria di default.
        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