JavascriptProva

martedì 5 luglio 2016

Impostazione di una suoneria personalizzata per un'App.

Basta, con i tentativi!
Provo a salvare in SharedPreferences la stringa Uri della suoneria.

Ricreiamo un Intent per selezionare le suonerie...

Dato che con il content non riesco ancora a orientarmi, vado al risultato pratico e cerco di individuare quale sia la suoneria di default...

Si usa RingtoneManager.

Vediamolo...

Ecco, ho trovato una via differente: il codice per selezionare direttamente le suonerie:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
Lo applico...

  bttSelect.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
    startActivityForResult(intent,0);
     
   }
  });
Bene: così finalmente ottengo una lista delle suonerie! Nella confusione di questi giorni intorno a questo argomento non avevo ancora messo a fuoco la cosa sebbene avessi già incontrato questo genere di codice.
Così facendo non c'è bisogno di fornire Intent.setData.

Ecco il codice completo, che funziona:
public class MainActivity extends Activity {

 Button bttSelect;
 Button bttPlay;
 Uri ringtoneUri;
 SharedPreferences SP;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  SP=this.getPreferences(Context.MODE_PRIVATE);
  
  bttSelect=(Button)findViewById(R.id.button1);
  bttPlay=(Button)findViewById(R.id.button2);
  
  bttSelect.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
    startActivityForResult(intent,0);
     
   }
  });
  
  bttPlay.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    String stringUri=SP.getString("suoneria", "");
    if(TextUtils.isEmpty(stringUri)==false){
     final Ringtone ringTone=RingtoneManager.getRingtone(getApplicationContext(), Uri.parse(stringUri));
     ringTone.play();
     TimerTask task=new TimerTask(){

      @Override
      public void run() {
       ringTone.stop();
       
      }
      
     };
     Timer timer=new Timer();
     timer.schedule(task, 2000);
    }

   }
  });

 

  
 }
 
 @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data){
  if(resultCode==RESULT_OK){
   
   Uri uri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
   String stringUri=uri.toString();
   SharedPreferences.Editor editor = SP.edit();
   editor.putString("suoneria", stringUri);
   editor.commit();
   
  }
 }


}

Nessun commento:

Posta un commento