SportBarCamp, aplicativo mobile com sistema de envio de SMS

Esse aplicativo, tem uma mecânica bem simples, cadastrar seu amigos separando eles por times e depois enviar SMSs em massa para eles, so que de vez de você escolher um amigo, você escolhe um time para aquele SMS.

Vamos para a pratica!

A primeira coisa foi definir a mecânica eas interfaces para o aplicativo, nesse caso para deixar tudo bem separado, criei todas as telas em xmls usando a própria lib do android.

Tela inicial do aplicativo

Tela inicial do aplicativo

Depois de montar os botoes e todo o resto, criamos um arquivo xml chamado inicio.xml, esse arquivo vai ser nossa tela inicial.

O xml inicial ficaria assim:

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”@drawable/fundo”
android:orientation=”vertical” >

Aonde nos informamos um id para ele e setamos um fundo, logo em seguida vamos colocar alguns botoes, para se colocar um botão:

<ImageView
android:id=”@+id/imageView3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:onClick=”sms”
android:src=”@drawable/btnsms” />

Nessa caso inserimos um elemento dentro do nosso layout, aonde informamos as propriedades dele tamanho e tipo de obj.

Para simplificar esse aplicativo resolvi criar um xml para cada interface, em vez de ficar sempre mudando o mesmo xml, isso deixa o aplicativo mais simples porem, ele fica mais pesado para o usuário final.

Feito no layout de todas as pages, vamos para o fonte.

Todo o aplicativo Android tem uma classe principal que herda uma classe chamada “Activity”, essa classe gera um processo no celular que fica rodando no aparelho do usuário.Ela tem um método chamado “onCreate”, sempre vai ser executado quando o usuário inicia o aplicativo , nele vamos colocar tudo que precisamos para rodar ele, então como estamos trabalhando com uma lista de amigos, vamos verificar se a lista existe e carregar ela.

No método  carregar Amigos, vamos ler a lista de amigos que gravamos em um arquivo texto no celular do usuário, caso esse arquivo não exista criamos ele, caso contrario apenas verificamos se tem algo nele e carregamos para a variável amigos.

public void carregarAmigos(){
FileInputStream fil = null;
try{
fil = new FileInputStream(this.FILENAMELISTA);
try {
if(fil.available()>1){
byte[] buf = new byte[1024];
try {
fil.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
this.amigos = new String(new String(buf).trim().intern());
}
} catch (IOException e) {
e.printStackTrace();
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}
}

Pronto agora precisamos cadastrar nossos amigos de acordo com tela que criamos para isso

Tela de cadastro de amigos

Tela de cadastro de amigos

Nessa tela vamos cadastrar o nome do time do amigo, o telefone eo nome. Claro que nosso aplicativo poderia pegar os contatos do próprio aparelho do usuário, mais a intenção desse aplicativo era trabalhar com escrita e busca no aparelho do usuário, em um post futuro mostro como fazer essa adaptação.

Para cadastrar criamos o método salvarTimeAmigo, ele vai ser responsável por capturar os dados da nossa interface e gravar no arquivo que criamos.

public void salvarTimeAmigo(View button){
final EditText campoNomeAmigo = (EditText) findViewById(R.id.nomeAmigo);
final EditText campoTelAmigo = (EditText) findViewById(R.id.telAmigo);
final EditText campoTimeAmigo = (EditText) findViewById(R.id.timeAmigo);
if(this.amigos.equals(“”)){
this.amigos = campoNomeAmigo.getText().toString().trim()+”;”+campoTelAmigo.getText().toString().trim()+”;”+campoTimeAmigo.getText().toString().trim();
}else{
this.amigos = this.amigos+”-”+campoNomeAmigo.getText().toString().trim()+”;”+campoTelAmigo.getText().toString().trim()+”;”+campoTimeAmigo.getText().toString().trim()+”-”;
}
FileOutputStream fos = null;
try {
fos = openFileOutput(this.FILENAMELISTA, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
fos.write(this.amigos.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
this.agenda(button);
setContentView(R.layout.inicio);
}

Notem que logo depois de salvar os dados, chamamos “setContentView(R.layout.inicio);”, com essa chamada carregamos a interface inicio.xml, dessa maneira voltamos para a tela principal de nossa aplicação.

Depois dos amigos cadastrados, agora vamos enviar o sms para os amigos.

Tela de envio de SMS

Tela de envio de SMS

Para enviar o SMS, precisamos de um operadora, para isso conheço apenas duas opções, fazer algum acordo para usar um sistema delas ou usar o BlueVia, nessa caso vamos usar a segunda opção.

Nesse post não vou me aprofundar muito a respeito de como o BlueVia funciona, mais vamos explicar por cima o que precisamos para usar ele.

Para usar o BlueVia precisamos nos cadastrar no site http://www.bluevia.com/, através dele geramos um ticket e um hash para usar a rede de celular, agora so baixar a API para Android e implementar na nossa aplicação.

Ao pressionar o botão enviar, a nossa classe principal captura os dados dessa interface e envia para a classe SMS, a mesma se conecta com o BlueVia e manda os dados para envio.

Ao iniciar a classe SMS, iniciamos a conexão no construtor dela

String token = requestToken.getToken();
String secret = requestToken.getSecret();
String verifier = “000000″;
Token accessToken = new Token(token,secret);
this.smsClient = new BlueviaSmsMTClient(context, Mode.LIVE, “token”,”key”, accessToken);
} catch (BlueviaClientException e1) {
e1.printStackTrace();
}

Depois de iniciar a conexão, a nossa classe principal chama o método SMS.enviar aonde enviamos o SMS para a lista de cliente que ao mesmo time.

SmsMessage sms = new SmsMessage();
sms.setMessage(this.getMsg());
String[] celulares = this.numeros.split(“,”);
for(int i=0;i<celulares.length;i++){
sms.addAddress(new UserId(Type.PHONE_NUMBER,celulares[i]));
}
try {
this.smsClient.sendSms(sms);
} catch (BlueviaClientException e) {
e.printStackTrace();
}

 

Pronto logo depois da classe principal executar essa ação, voltamos para a tela inicial e esperamos a próxima interação do usuário.

Deixou aqui disponível o fonte completo para download.

 

Bookmark the permalink.