Sunteți pe pagina 1din 17

StartActivity.java /* * Atividade para gerenciamento da primeira tela * */ package br.pro.cidandrade.

exemplogeral; import import import import import import import import android.app.Activity; android.content.Intent; android.os.Bundle; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.EditText; android.widget.Toast;

public class StartActivity extends Activity { private final static String NOME_PARAM = new String("nome"); private final static String BROAD_A_ENVIAR = new String("NOTIFICAR_GERAL"); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.start); Button bProx = (Button) findViewById(R.id.btAbrirProx); bProx.setOnClickListener(bAbreProxAcao()); Button bBroad = (Button) findViewById(R.id.btDispBroad); bBroad.setOnClickListener(bDisparaBroadcast()); } private OnClickListener bAbreProxAcao() { return new OnClickListener() { @Override public void onClick(View v) { EditText tv = (EditText) findViewById(R.id.etNome); String nome = tv.getText().toString(); if (nome.equals("")) { Toast.makeText(StartActivity.this, R.string.msg_preencherNome, Toast.LENGTH_LONG).show(); } else { Intent it = new Intent(StartActivity.this, SegundaTela.class); Bundle parametros = new Bundle(); parametros.putString(NOME_PARAM, nome); it.putExtras(parametros); startActivity(it); } } };

private OnClickListener bDisparaBroadcast() { return new OnClickListener() { Page 1

StartActivity.java @Override public void onClick(View v) { sendBroadcast(new Intent(BROAD_A_ENVIAR)); } };

Page 2

start.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/lbDigiteNome" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/lb:digitenome" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/etNome" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPersonName" > <requestFocus /> </EditText> <Button android:id="@+id/btAbrirProx" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/bl:abrirprox" /> <Button android:id="@+id/btDispBroad" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/other:dispBroad" /> </LinearLayout>

Page 1

SegundaTela.java /* * Atividade para gerenciamento da segunda tela * */ package br.pro.cidandrade.exemplogeral; import import import import import import import android.app.Activity; android.content.Intent; android.os.Bundle; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.TextView;

public class SegundaTela extends Activity { private final static String NOME_PARAM = new String("nome"); private final static String BROAD_A_ENVIAR = new String("OBTER_IMAGEM"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.segunda_tela); TextView tvNome = (TextView) findViewById(R.id.lbExibeNome); Button bDownload = (Button) findViewById(R.id.btDownload); bDownload.setOnClickListener(fazerDownload()); Intent it = getIntent(); if (it != null) { Bundle parametros = it.getExtras(); if (parametros != null) { String nome = parametros.getString(NOME_PARAM); if (nome != null) { tvNome.setText(nome); } else { voltarAoInicio(); } } else { voltarAoInicio(); } } else { voltarAoInicio(); } } private void voltarAoInicio() { Intent itVolta = new Intent(SegundaTela.this, StartActivity.class); startActivity(itVolta); } private OnClickListener fazerDownload() { return new OnClickListener() { @Override Page 1

SegundaTela.java public void onClick(View v) { sendBroadcast(new Intent(BROAD_A_ENVIAR)); } };

Page 2

segunda_tela.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/lbExibeNome" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/lbServico" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/lb:segtela" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/btDownload" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/bl:download" /> </LinearLayout>

Page 1

Notificacao.java /* * Exibe informaes sobre notificao * */ package br.pro.cidandrade.exemplogeral; import android.app.Activity; import android.os.Bundle; public class Notificacao extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notificacao); } }

Page 1

notificacao.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/lb:notificacao" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>

Page 1

FazerDownload.java /* * BroadcastReceiver para disparar servio de download * */ package br.pro.cidandrade.exemplogeral.receivers; import import import import import import import java.util.Calendar; java.util.Date; android.app.AlarmManager; android.app.PendingIntent; android.content.BroadcastReceiver; android.content.Context; android.content.Intent;

public class FazerDownload extends BroadcastReceiver { private final static String NOME_INTENCAO = new String("OBTER_IMAGEM"); @Override public void onReceive(Context context, Intent intent) { Intent it = new Intent(NOME_INTENCAO); PendingIntent p = PendingIntent.getService(context, 0, it, 0); Date d = new Date(); Calendar c = Calendar.getInstance(); c.setTimeInMillis(d.getTime()); c.add(Calendar.SECOND, 10); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); long tempo = c.getTimeInMillis(); am.set(AlarmManager.RTC_WAKEUP, tempo, p); }

Page 1

Receptor.java /* * BroadcastReceiver com exemplo de notificao * */ package br.pro.cidandrade.exemplogeral.receivers; import import import import import import import import import import import import import java.util.Date; br.pro.cidandrade.exemplogeral.Notificacao; br.pro.cidandrade.exemplogeral.R; android.app.Notification; android.app.NotificationManager; android.app.PendingIntent; android.content.BroadcastReceiver; android.content.Context; android.content.Intent; android.net.Uri; android.os.Vibrator; android.provider.MediaStore.Audio; android.widget.Toast;

public class Receptor extends BroadcastReceiver { private final static String MSG1 = new String("Receptor de Broadcast em ao"); private final static String MSG2 = new String("Notificao disparada"); private final static String MSG3 = new String("Exemplo de Notificao"); private final static String AUDIO = new String("5"); @Override public void onReceive(Context context, Intent intent) { CharSequence mensagemReceptor = MSG1; CharSequence mensagemNotificacao = MSG2; Toast.makeText(context, mensagemReceptor, Toast.LENGTH_SHORT).show(); Vibrator vibrador = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); vibrador.vibrate(new long[] { 100, 250, 100, 500 }, 1); NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Date d = new Date(); Notification n = new Notification(R.drawable.ic_launcher, mensagemNotificacao, d.getTime()); n.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, AUDIO); n.flags = Notification.FLAG_ONLY_ALERT_ONCE; n.flags = Notification.FLAG_AUTO_CANCEL; Intent it = new Intent(context, Notificacao.class); PendingIntent p = PendingIntent.getActivity(context, 0, it, 0); n.setLatestEventInfo(context, MSG3, mensagemNotificacao, p); nm.notify(R.string.app_name, n); } Page 1

FazerDownloadService.java /* * Servio para download * */ package br.pro.cidandrade.exemplogeral.services; import import import import import import import import import import import import import import java.io.ByteArrayOutputStream; java.io.IOException; java.io.InputStream; java.net.HttpURLConnection; java.net.URL; java.util.Date; android.R; android.app.Notification; android.app.NotificationManager; android.app.PendingIntent; android.app.Service; android.content.Context; android.content.Intent; android.os.IBinder;

public class FazerDownloadService extends Service { private final static String URLAddress = new String("http://goo.gl/NRKOZ"); private final static String PROPRIEDADE_CONEXAO = new String("Request-Method"); private final static String VALOR_PROPRIEDADE = new String("GET"); private final static String VAL_INTENCAO = new String("Imagem"); private final static String MSG1 = new String("Download concludo"); private final static String MSG2 = new String("Visualizar arquivo"); @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); download(); } private void download() { new Thread() { @Override public void run() { try { URL url = new URL(URLAddress); HttpURLConnection conexao = (HttpURLConnection) url.openConnection(); conexao.setRequestProperty(PROPRIEDADE_CONEXAO, Page 1

FazerDownloadService.java VALOR_PROPRIEDADE); conexao.setDoInput(true); conexao.setDoOutput(false); conexao.connect(); InputStream in = conexao.getInputStream(); byte[] bytesDaImagem = readBytes(in); conexao.disconnect(); notificar(bytesDaImagem); stopSelf(); } catch (IOException ioe) { }

} }.start();

private byte[] readBytes(InputStream i) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { byte[] buffer = new byte[1024]; int tamanho; while ((tamanho = i.read(buffer)) > 0) { baos.write(buffer, 0, tamanho); } byte[] bytes = baos.toByteArray(); return bytes; } finally { baos.close(); i.close(); } } protected void notificar(byte[] bytesDaImagem) { Context c = FazerDownloadService.this; String titulo = new String(MSG1); String mensagem = new String(MSG2); Class<?> atividade = br.pro.cidandrade.exemplogeral.VisualizarImagem.class; NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Date d = new Date(); Notification notificacao = new Notification( R.drawable.ic_menu_gallery, titulo, d.getTime()); Intent iMensagem = new Intent(c, atividade); iMensagem.putExtra(VAL_INTENCAO, bytesDaImagem); PendingIntent p = PendingIntent.getActivity(c, 0, iMensagem, 0); notificacao.setLatestEventInfo(c, titulo, mensagem, p); notificacao.vibrate = new long[] { 100, 250, 100, 500 }; nm.notify(br.pro.cidandrade.exemplogeral.R.string.app_name, notificacao); }

Page 2

VisualizarImagem.java /* * Gerenciamento da notificao de exibio de imagem * */ package br.pro.cidandrade.exemplogeral; import import import import import import android.app.Activity; android.app.NotificationManager; android.graphics.Bitmap; android.graphics.BitmapFactory; android.os.Bundle; android.widget.ImageView;

public class VisualizarImagem extends Activity { private final static String NOME_PARAM = new String("Imagem"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ImageView imgView = new ImageView(VisualizarImagem.this); setContentView(imgView); byte[] bytesDaImagem = getIntent().getExtras().getByteArray(NOME_PARAM); Bitmap bm = BitmapFactory.decodeByteArray(bytesDaImagem, 0, bytesDaImagem.length); imgView.setImageBitmap(bm); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.cancel(R.string.app_name); } }

Page 1

strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string <string <string <string <string <string <string <string name="app_name">Exemplo Geral de Android</string> name="bl:abrirprox">Abrir prxima tela</string> name="bl:download">Download</string> name="lb:digitenome">Digite seu nome</string> name="lb:segtela">Segunda Tela</string> name="lb:notificacao">Notificao aceita</string> name="msg:preencherNome">Preencher nome</string> name="other:dispBroad">Disparar Broadcast</string>

</resources>

Page 1

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.pro.cidandrade.exemplogeral" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".StartActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SegundaTela" > </activity> <receiver android:name=".receivers.Receptor" > <intent-filter> <action android:name="NOTIFICAR_GERAL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <receiver android:name=".receivers.FazerDownload" > <intent-filter> <action android:name="OBTER_IMAGEM" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <service android:name=".services.FazerDownloadService" > <intent-filter> <action android:name="OBTER_IMAGEM" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <activity android:name="VisualizarImagem" > </activity> </application> Page 1

AndroidManifest.xml </manifest>

Page 2

S-ar putea să vă placă și