[Android] Conexão com MySQL e Gerenciamento de Dados com XML

Olá,
Eu precisarei fazer um app para Android que faça vendas. Já temos nosso banco de dados MySQL rodando. Como pensei em fazer: localmente, as vendas, o catálogo de produtos e etc. ficarão cadastrados em um arquivo XML, e depois fará a sincronização com o banco de dados MySQL, assim que tiver acesso a rede (para facilitar, vou deixar um botão para sincronização, para não ter que detectar quando tem ou não uma rede disponível).

1º Pergunta: é amigável, usar XML e MySQL com Android? Difere muito do JSE? No caso do MySQL, também trabalha-se com um driver de conexão?

2º Pergunta: a aplicação será direcionada para tablet e, por tanto, não sei como o mesmo funciona, com relação a resolução. Como não tenho um tablet, e conheço pouco, há vários tamanhos em polegadas ou, por enquanto, só há um tamanho? Se há diferentes tamanhos de tablet, há alguma forma de se adaptar a resolução, ou o cliente terá de compra-lo de acordo com o nosso app?

Obrigado!

Amigo, existem tablets de 10 polegadas, tablets de 7 polegadas conheço somente esses tamanhos para android, e quanto a sua aplicação, vc usar xml no android é a mesma coisa que vc usar xml em qualquer aplicação java, o android tbm tem o sax e o dom para vc poder manipular o xml, mais vc pode criar um banco de dados para armazenar essas informações locais, e depois sincronizar isso com um banco de dados web usando webservice, no seu lugar com certeza criaria um banco de dados para guardar essas informações, muito mais pratico do que trabalhar com xml, se quiser trabalhar com banco de dados no android da uma olhada no sqlLite, pois vc precisara saber sobre ele se quiser trabalhar com banco de dados no android, vc tbm se quiser não precisa criar um botão para sincronizar pode fazer isso de forma automatica pois o android tem um esquema chamado de Broadcastreceiver que vc pode usar para saber quando tem uma conexão com a internet, como funciona o Broadcastreceiver: o android envia para todas as aplicações instaladas no seu aparelho uma mensagem de acordo com o evento ocorrido, por exemplo se vc quiser iniciar uma aplicação logo apos o boot do android é possivel, basta vc criar uma classe que extends de Broadcastreceiver e implementar o método onReceiver() onde na implementação desse método vc chama uma classe que inicia sua aplicação, no seu caso vc criaria uma classe que extends de Broadcastreceiver e pegaria o evento de conexao com a internet, vou mostrar como vc faz isso:

Classe estendendo de Broadcastreceiver e implementando o metodo onReceiver(Context context,Intent intent):

public class ConnectivityReceiver extends BroadcastReceiver {
	
	@Override
	public void onReceive(Context context, Intent intent) {
		boolean toReturnEstadoConexao = verificaConexao(context);
		
		if (toReturnEstadoConexao==true) {
			/* Faz alguma coisa, no seu caso é sincronizar com o banco de dados na web**/
		}else{
                     /* Faz alguma coisa**/
               }

	}
	private boolean verificaConexao(Context context){
		boolean toReturn = false;
		try{
                         /*Pega informações da rede**/
			NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
		     if (info != null) {
			 if (info.getState().equals(State.CONNECTED)) { // se vc esta conectado a internet ele vai retornar true
				toReturn = true;
			 }else if (info.getState().equals(State.DISCONNECTED)){ // se vc não esta conectado a internet ele vai retornar false
			        toReturn = false;
			 }

		     }else{
			   return toReturn;
		     }

		}catch (Exception e) {
			 /*trata exception**/
		}
		return toReturn;
	}

Depois que fizer sua classe vc vai mapear essa classe AndroidManifest.xml da seguinte forma:

      <receiver android:name=".ConnectivityReceiver">
		 <intent-filter>
		     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
		 </intent-filter>
      </receiver>

Antes vc coloca a permissão para acesso a internet no arquivo AndroidManifest.xml, fazendo isso toda vez que houver algum evento na rede a classe ConnectivityReceiver será chamada ai é só vc colocar sua regra de negocio. qualquer duvida estamos ai.

Legal, melhor ainda.

Com relação às polegadas, neste caso, o melhor a fazer seria pedir ao cliente para se adequar à nossa resolução?
Com relação ao SQLLite, o nosso cliente possui uma grande quantidade de produtos cadastrados no banco. Será que dá pra fazer com SQLLite? PS: já temos uma versão deste nosso app rodando no palm.

Obrigado.

Atende sim.

Obrigado.

[quote=srmachado]Amigo, existem tablets de 10 polegadas, tablets de 7 polegadas conheço somente esses tamanhos para android, e quanto a sua aplicação, vc usar xml no android é a mesma coisa que vc usar xml em qualquer aplicação java, o android tbm tem o sax e o dom para vc poder manipular o xml, mais vc pode criar um banco de dados para armazenar essas informações locais, e depois sincronizar isso com um banco de dados web usando webservice, no seu lugar com certeza criaria um banco de dados para guardar essas informações, muito mais pratico do que trabalhar com xml, se quiser trabalhar com banco de dados no android da uma olhada no sqlLite, pois vc precisara saber sobre ele se quiser trabalhar com banco de dados no android, vc tbm se quiser não precisa criar um botão para sincronizar pode fazer isso de forma automatica pois o android tem um esquema chamado de Broadcastreceiver que vc pode usar para saber quando tem uma conexão com a internet, como funciona o Broadcastreceiver: o android envia para todas as aplicações instaladas no seu aparelho uma mensagem de acordo com o evento ocorrido, por exemplo se vc quiser iniciar uma aplicação logo apos o boot do android é possivel, basta vc criar uma classe que extends de Broadcastreceiver e implementar o método onReceiver() onde na implementação desse método vc chama uma classe que inicia sua aplicação, no seu caso vc criaria uma classe que extends de Broadcastreceiver e pegaria o evento de conexao com a internet, vou mostrar como vc faz isso:

Classe estendendo de Broadcastreceiver e implementando o metodo onReceiver(Context context,Intent intent):

public class ConnectivityReceiver extends BroadcastReceiver {
	
	@Override
	public void onReceive(Context context, Intent intent) {
		boolean toReturnEstadoConexao = verificaConexao(context);
		
		if (toReturnEstadoConexao==true) {
			/* Faz alguma coisa, no seu caso é sincronizar com o banco de dados na web**/
		}else{
                     /* Faz alguma coisa**/
               }

	}
	private boolean verificaConexao(Context context){
		boolean toReturn = false;
		try{
                         /*Pega informações da rede**/
			NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
		     if (info != null) {
			 if (info.getState().equals(State.CONNECTED)) { // se vc esta conectado a internet ele vai retornar true
				toReturn = true;
			 }else if (info.getState().equals(State.DISCONNECTED)){ // se vc não esta conectado a internet ele vai retornar false
			        toReturn = false;
			 }

		     }else{
			   return toReturn;
		     }

		}catch (Exception e) {
			 /*trata exception**/
		}
		return toReturn;
	}

Depois que fizer sua classe vc vai mapear essa classe AndroidManifest.xml da seguinte forma:

      <receiver android:name=".ConnectivityReceiver">
		 <intent-filter>
		     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
		 </intent-filter>
      </receiver>

Antes vc coloca a permissão para acesso a internet no arquivo AndroidManifest.xml, fazendo isso toda vez que houver algum evento na rede a classe ConnectivityReceiver será chamada ai é só vc colocar sua regra de negocio. qualquer duvida estamos ai.[/quote]

Puxa, ideal pra mim!

Muito obrigado.