Fruto de uma era tecnológica que está vindo tal qual um trem bala desde 1982, os smartfones e tablets estão entrando no elenco de soluções de processamento digital deste século XXI (o século da promessa de solução para tudo).
O iPhone foi o pioneiro nesta era de portáteis com alto poder de processamento para fins pessoais. Mas até a TV Tupi (você se lembra dela ?) foi pioneira mas não conseguiu se manter. A Apple é uma gigante, símbolo do que o americano pode oferecer em qualidade. Já a Samsung é uma gigante multi-segmento (TVs também) que pensa em atingir vários públicos, sem deixar que a qualidade torne seu produto em algo de ostentação de luxo apenas.
O consumidor quer produto e inserção. Inserção quer dizer que o consumidor não quer deixar uma onda tecnológica passar, mas caso a "prancha de surf" necessária para pegar esta onda for muito cara, ele vai procurar meios alternativos para adquirir a "prancha". A inserção ou Inclusão Digital se transformou em preocupação do Governo Federal, pois tecnologia é insumo básico para quebrar esta barreira de subdesenvolvimento que domina o nosso país.
iPad
O consumidor médio brasileiro não pode pagar o preço de um iPad, injusto e proibitivo. Não se faz de um produto de uso tecnológico do dia-a-dia algo para ostentação de status. Isto se faz com veículos, casas e gêneros de consolidado valor para poucos.
Casas e veículos caros não se incluem na classe de produtos que melhoram a qualidade agregada da Sociedade.
Por isto, o iPad se torna obsoleto em seus fins. Tecnologia para ostentação, para se falar que se tem.
O produto
O Galaxy já é algo com uma tecnologia embarcada de anos de melhoramentos e estudos em torno do sistema Linux. O seu carro chefe, tecnologia WiFi, é imbatível em raio de ação e manutenção de sinal. A qualidade gráfica e a velocidade são inteiramente satisfatórios. Além disto, a tecnologia AllShare (toda a rede enxerga mídia compartilhada) é algo que funciona logo que se liga.
O sistema operacional Android é de fácil manejo e obviedade através da interface gráfica. A integração com Windows é imediata via drives da Internet facílimos de achar e de instalar.
Conectividade a desktops
Através do cabo ou WiFi se tem acesso ao sistema interno de arquivos com facilidade. Para se fazer isto no iPhone é uma luta, pois foi necessário que estudiosos quebrassem as RIDÍCULAS travas do iPhone, por meio dos softwares discutidos neste blog.
O programa WiFi transfer disponibiliza um endereço para se digitar no browser e iniciar as transferências de arquivos. Ele é gratuito e pode ser baixado na Market Store ou Play Store da Samsung.
O Bluetooth é tão bom, que basta ligar. E não tem incompatibilidades com o Nokia, pelo menos. Se falhar com o iPhone ou iPad, apenas dê umas risadas, pois parece que eles não se preocuparam em compatibilidade com os outros.
E o que fazer com o iPad ?
Guarde-o como lembrança de um marco tecnológico e vá correndo comprar um Galaxy.
domingo, 12 de agosto de 2012
quinta-feira, 9 de agosto de 2012
Primeira aplicação para o Android com botão
Deixando de lado detalhes de configuração do ADT Plugin Android no Eclipse, vamos explicar a anatomia da primeira aplicação com um botão para o Android.
Bibliotecas
//import android.app.Activity;
//import android.app.AlertDialog;
import android.app.*;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnClickListener;
import android.content.*;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
//import android.view.Menu;
//import android.view.View;
import android.view.*;
//import android.widget.Button;
//import android.widget.Toast;
import android.widget.*;
Atividade Principal (Ação principal)
Esta é a declaração default de MainActivity de uma aplicação Android
public class MainActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
// Outros métodos
}
Colocação de um botão
Na paleta de Form widgets selecionamos o Botão com o mouse e arrastamos para o Formulário. Damos a ele o Id de button1, e alteramos seu texto para "ClickMe".
O método PopIt
Como se trata de uma aplicação Java, cuja característica é a de provocar a escrita de muito código, vamos aproveitar um código que equivale a um Prompt (javascript) ou MessageBox (VBscript). Este código deverá ser utilizado para mensagens com opção de prosseguir e sair:
public void PopIt( String title, String message ){
new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).show();
}
Se você deseja escrever em Java, acostume-se com esta quantidade de código, ou então desista.
Declarando o evento do botão
public void ClickBotao(View v){
PopIt("Exit Application", "Are you sure you want to exit?");
}
O evento de Click de button1 foi declarado nas propriedades deste botão como ClickBotao, e aqui declaramos que ele vai mostrar a janela PopIt.
Ajustando o início da aplicação
protected void start(){
myButton = (Button) findViewById(R.id.button1);
}
O botão reside em R.java, que declara todos os identificadores de controles:
Código Completo
package com.example.berna1;
//import android.app.Activity;
//import android.app.AlertDialog;
import android.app.*;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnClickListener;
import android.content.*;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
//import android.view.Menu;
//import android.view.View;
import android.view.*;
//import android.widget.Button;
//import android.widget.Toast;
import android.widget.*;
public class MainActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
protected void start(){
myButton = (Button) findViewById(R.id.button1);
}
public void ClickBotao(View v){
PopIt("Exit Application", "Are you sure you want to exit?");
}
public void PopIt( String title, String message ){
new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).show();
}
}
Bibliotecas
//import android.app.Activity;
//import android.app.AlertDialog;
import android.app.*;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnClickListener;
import android.content.*;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
//import android.view.Menu;
//import android.view.View;
import android.view.*;
//import android.widget.Button;
//import android.widget.Toast;
import android.widget.*;
Atividade Principal (Ação principal)
Esta é a declaração default de MainActivity de uma aplicação Android
public class MainActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
// Outros métodos
}
Colocação de um botão
Na paleta de Form widgets selecionamos o Botão com o mouse e arrastamos para o Formulário. Damos a ele o Id de button1, e alteramos seu texto para "ClickMe".
O método PopIt
Como se trata de uma aplicação Java, cuja característica é a de provocar a escrita de muito código, vamos aproveitar um código que equivale a um Prompt (javascript) ou MessageBox (VBscript). Este código deverá ser utilizado para mensagens com opção de prosseguir e sair:
public void PopIt( String title, String message ){
new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).show();
}
Se você deseja escrever em Java, acostume-se com esta quantidade de código, ou então desista.
Declarando o evento do botão
public void ClickBotao(View v){
PopIt("Exit Application", "Are you sure you want to exit?");
}
O evento de Click de button1 foi declarado nas propriedades deste botão como ClickBotao, e aqui declaramos que ele vai mostrar a janela PopIt.
Ajustando o início da aplicação
protected void start(){
myButton = (Button) findViewById(R.id.button1);
}
O botão reside em R.java, que declara todos os identificadores de controles:
Código Completo
package com.example.berna1;
//import android.app.Activity;
//import android.app.AlertDialog;
import android.app.*;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnClickListener;
import android.content.*;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
//import android.view.Menu;
//import android.view.View;
import android.view.*;
//import android.widget.Button;
//import android.widget.Toast;
import android.widget.*;
public class MainActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
protected void start(){
myButton = (Button) findViewById(R.id.button1);
}
public void ClickBotao(View v){
PopIt("Exit Application", "Are you sure you want to exit?");
}
public void PopIt( String title, String message ){
new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).show();
}
}
Assinar:
Postagens (Atom)