Ecco, ho questo:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent=new Intent(this,Seconda.class); PendingIntent pendingIntent=PendingIntent.getActivity(this, 0, intent,0); AlarmManager alarmManager=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE); } }
Che farne?
Intanto devo introdurre la classe Calendar.
Il codice è questo:
Calendar calendar=Calendar.getInstance();Ma un momento: affrontiamo le suonerie, che per i miei programmi in cantiere sono molto utili.
Ecco: Si parte da un fantomatico RingtoneManager.
Si usa un Uri, che viene identificato da RingtoneManager.getDefault(RingtoneManager.ALARM_TYPE).
Proviamo:
Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);Questo è un Uri.
Poi dall'Uri si passa al ringtone vero e proprio, identificato in base all'Uri.
Ringtone ringTone=RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri);E infine, se non è nullo, si suona.
Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); Ringtone ringTone=RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri); if(ringTone!=null)ringTone.play();Riscrivo...
Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); Ringtone ringTone=RingtoneManager.getRingtone(getApplicationContext(),ringtoneUri); if(ringTone!=null)ringTone.play();
Come si sceglie la suoneria?
Immagino sia come scegliere le immagini...
Ripassiamo un po' il meccanismo di come si sceglievano le immagini. Posiziono un ImageView nell'attività... Quindi lo identifico con una variabile in Java.
imageView=(ImageView)findViewById(R.id.imageView1); Intent intent=new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setData(Uri.parse("content://media/external/images/media")); startActivityForResult(intent,0); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data){ if(resultCode==RESULT_OK){ Log.d("DATA",""+data.getData()); } }Non ho usato l'ImageView... E non ho ricordato alla perfezione i passaggi.
Dunque ora riscrivo di sana pianta il tutto aggiungendo anche l'immagine alla ImageView.
imageView=(ImageView)findViewById(R.id.imageView1); Intent intent=new Intent(); intent.setAction(Intent.ACTION_PICK); startActivityForResult(intent,0); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data){ if(resultCode==RESULT_OK){ imageView.setImageURI(data.getData()); } }Vediamo se funziona...
Mi appare un chooser che non c'entra nulla...
Dimenticavo questo:
imageView=(ImageView)findViewById(R.id.imageView1);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivityForResult(intent,0);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode==RESULT_OK){
imageView.setImageURI(data.getData());
}
}
Vediamo, ora...Strano.
setImageUri non funziona... Non ricordo se funzionasse prima...
E comunque è descritto che può dare problemi. Dunque devo memorizzare bene la conversione dell'uri a path.
Dobbiamo considerare context.getContentResolver() come un cursor di database, ossia un insieme di campi.
Poniamo la query fornendo l'Uri come primo parametro, quindi identificata la riga dobbiamo identificare la colonna.
La colonna è identificata da Mediastore.Images.Columns.DATA.
Identificata quesca colonna, prendiamo la stringa corrispondente.
Bene.
Lo scrivo...
Cursor crs=getApplicationContext().getContentResolver().query(data.getData(), null, null, null, null); crs.moveToFirst(); int indice=crs.getColumnIndex(MediaStore.Images.ImageColumns.DATA); String path=crs.getString(indice); Bitmap bitmap=BitmapFactory.decodeFile(path); imageView.setImageBitmap(bitmap);Vediamo...
E non funziona neanche questo! E certo! Non ho messo il permesso READ_EXTERNAL_STORAGE nel Manifest!
Credevo che non fosse più necessario, ma questo codice non è compilato per la versione più moderna di Android, quindi bisogna metterlo, e comunque devo pensare anche che potrebbe essere usato in versioni più vecchie.
Lo metto:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />E funziona tutto, sia la Bitmap sia l'ImageUri!
Nessun commento:
Posta un commento