Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Aplicação para Ler Número de Telefone Recebido em uma Chamada, Notas de estudo de Engenharia de Telecomunicações

Uma aplicação android que utiliza a classe broadcastreceiver para ler o número de telefone recebido em uma chamada e imprimir na tela de log. O código é composto por duas classes: myphonereceiver e mainacgvity.

Tipologia: Notas de estudo

2017

Compartilhado em 31/10/2017

bruno-z36
bruno-z36 🇧🇷

4

(7)

50 documentos

1 / 34

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Broadcasts)
Programação)para)a)Plataforma)Android)–)Aula)17)
O)que)são)eventos)de)difusão?)
Como)capturar)eventos)de)chamadas)telefônicas?)
Como)verificar)o)estado)da)bateria?)
Como)implementar)receptores)de)eventos)de)difusão?)
O)que)são)intenções)assíncronas?)
O)que)são)intenções)pendentes?)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22

Pré-visualização parcial do texto

Baixe Aplicação para Ler Número de Telefone Recebido em uma Chamada e outras Notas de estudo em PDF para Engenharia de Telecomunicações, somente na Docsity!

Broadcasts

Programação para a Plataforma Android – Aula 17

  • O que são eventos de difusão?
  • Como capturar eventos de chamadas telefônicas?
  • Como verificar o estado da bateria?
  • Como implementar receptores de eventos de difusão?
  • O que são intenções assíncronas?
  • O que são intenções pendentes?

Intenções de Difusão

• Intenções de Broadcast são entregues para

todos os receptores de broadcast registrados

no disposiGvo Android.

– Por exemplo, quando uma chamada é recebida,

todos os receptores desse Gpo de evento serão

acordados para tratá‐lo.

Qual (^) a diferença entre receptores (^) de broadcast e provedores de serviço ?

Recebendo Chamadas

• Chamadas

telefônicas são

capturadas como

eventos de difusão

( broadcast ).

Lendo números: Escreva uma aplicação que leia o número recebido em uma chamada, e o imprima na tela de log.

MyPhoneReceiver

public class MyPhoneReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); Log.w("DEBUG", state); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { String phoneNumber = extras .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); Log.w("DEBUG", phoneNumber); } } } } (^) MyPhoneReceiver.java

O Manifesto

<intent‐filter> </intent‐filter> <intent‐filter> <ac=on android:name="android.intent.ac=on.PHONE_STATE" > </ac=on> </intent‐filter> <uses‐permission android:name= "android.permission.READ_PHONE_STATE" /> AndroidManifest.xml Como simular a recepção de uma chamada?

Controle de Emulação

• O plugin Android

para Eclipse provê

uma interface para a

emissão de sinais ao

emulador.

Encontrando seu Número

public class MainAcGvity extends AcGvity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acGvity_main); TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String phonenumber = tm.getLine1Number(); Log.v("Phone_data", phonenumber == null? "No number" : phonenumber); } } MainAcGvity.java

Encontrando Informações de Operador

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acGvity_main); TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String phonenumber = tm.getLine1Number(); Log.v("Phone_data", phonenumber); String operatorname = tm.getNetworkOperatorName(); Log.v("Phone_data", operatorname); String operatorcode = tm.getNetworkOperator(); Log.v("Phone_data", operatorcode); String operatoriso = tm.getNetworkCountryIso(); Log.v("Phone_data", operatoriso); } MainAcGvity.java

Registrando a Intenção no Manifesto

<intent‐filter> </intent‐filter> <intent‐filter> <ac=on android:name="br.com.dcc052.aula17" /> </intent‐filter> Para que serve essa declaração? O^ que^ é esse nome? Como uma intenção do tipo " br.com. dcc052.aula17 " Poderia ser disparada? AndroidManifest.xml

Difundindo uma Intenção

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.acGvity_main);

Intent intent = new Intent();

intent.setAc=on("br.com.dcc052.aula17");

sendBroadcast(intent);

O que está faltando implementar? MainAcGvity.java

MyReceiver1 Intent { act=br.com.dcc052.aula flg=0x cmp=com.dcc052.aula17/.MyBroadcastReceiver (has extras) }

Definindo um Receptor

public class MyBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Log.v("MyReceiver", intent.toString());

Como (^) passar dados (^) para (^) o receptor? MyBroadcastReceiver.java

Comunicando Dados

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acGvity_main); Intent intent = new Intent(); intent.setAcGon("br.com.dcc052.aula17"); intent.putExtra("Arg1", "Oi"); sendBroadcast(intent); } @Override public void onReceive(Context context, Intent intent) { String arg = intent.getStringExtra("Arg1"); Log.v("MyReceiver0", arg); } MyBroadcastReceiver.java MainAcGvity.java Será^ que^ é^ possível termos^ mais de um receptor^ para a mesma^ intenção difundida?

MúlGplos Receptores

public class MyBroadcastReceiver1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v("Receiver1", intent.toString()); } } public class MyBroadcastReceiver0 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String arg = intent.getStringExtra("Arg1"); Log.v("Receiver0", arg); } } MyBroadcastReceiver1.java MyBroadcastReceiver0.java

Intenções Assíncronas

• Algumas intenções, chamadas assíncronas

( s3cky ) não desaparecem tão logo são

lançadas.

• É possível consultar a úlGma instância de uma

intenção desse Gpo.

• Os eventos de bateria são anunciados via

intenções assíncronas.

Escreva uma atividade que determine o estado da bateria do dispositivo.