Mostrando postagens com marcador Android. Mostrar todas as postagens
Mostrando postagens com marcador Android. Mostrar todas as postagens

quarta-feira, 7 de agosto de 2013

terça-feira, 2 de abril de 2013

Aplicativo IOS e Android

Boa tarde, pessoal!

Só para indicar a empresa P2Center.

É uma empresa especializada em criação de aplicativos Mobile, e sistemas outsourcing.

o site.
www.p2center.com

Eles vão lançar o aplicativo do padre Fábio de Melo, dia 10 de abril!!!



Vitor Yudi Hansen

sábado, 9 de março de 2013

O Android é o sistema móvel mais ameaçado pelos malware


São Paulo – O Android é o sistema móvel mais ameaçado pelos malware. A informação é da empresa de segurança F-Secure.
Segundo relatório da empresa, o sistema operacional móvel do Google é vítima de 79% das ameaças criadas para atacar celulares. Os vírus roubam dados, danificam o funcionamento do celular ou instalam software que vigiam o usuário.
De acordo com a empresa de segurança, o interessante é que o número de vírus para Android teve uma grande expansão nos últimos anos. Em 2011, 66% dos malware eram para Android; em 2010, apenas 11%. E o número deve aumentar nos demais anos por causa da popularização do sistema pelo mundo.
Rivais – O iOS (iPhone), principal rival do Android, por exemplo, é alvo de apenas 0,7% dos vírus catalogados pela empresa. O dado indica também que os desenvolvedores de vírus têm pouco interesse em atacar o sistema móvel da Apple.
Segundo a F-Secure, o Symbian, da Nokia, é alvo de 19% das ameaças do mundo móvel. E o número de ameaças deve cair, já que o sistema está perdendo mercado para os rivais em toda parte do mundo.
http://info.abril.com.br/noticias/seguranca/android-e-o-maior-alvo-de-virus-do-mundo-movel-09032013-6.shl



Vitor Yudi Hansen

quarta-feira, 6 de março de 2013

Consumindo WebService Android Soap com o KSOAP

Bom dia!

vou colocar uma classe exemplo de como consumir um webService soap,
com a lib ksoap:

 import java.io.InputStream;  
 import org.ksoap2.SoapEnvelope;  
 import org.ksoap2.serialization.PropertyInfo;  
 import org.ksoap2.serialization.SoapObject;  
 import org.ksoap2.serialization.SoapPrimitive;  
 import org.ksoap2.serialization.SoapSerializationEnvelope;  
 import org.ksoap2.transport.AndroidHttpTransport;  
 import android.app.Activity;  
 import android.app.ProgressDialog;  
 import android.graphics.drawable.Drawable;  
 import android.os.Bundle;  
 import android.os.Handler;  
 import android.os.Message;  
 import android.util.Log;  
 import android.view.View;  
 import android.widget.Button;  
 import android.widget.EditText;  
 import android.widget.ImageView;  
 import android.widget.TextView;  
 public class ExemploWSActivity extends Activity implements Runnable {  
      private AndroidHttpTransport transporte;  
      private TextView textView1;  
      private String namespace = "http://www.oorsprong.org/websamples.countryinfo";  
      private String METHOD_NAME = "CountryFlag";  
      private String URL = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso";  
      private String SOAP_ACTION = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?op=CountryFlag";  
      private SoapObject soap;  
      private SoapSerializationEnvelope envelope;  
      private ProgressDialog progress;  
      private SoapPrimitive resposta;  
      private Drawable drawable;  
      private ImageView imgView;  
      @Override  
      public void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.main);  
           imgView = (ImageView) findViewById(R.id.imageView1);  
           Button btnOK = (Button) findViewById(R.id.button1);  
           final EditText txtNome = (EditText) findViewById(R.id.editText1);  
           btnOK.setOnClickListener(new View.OnClickListener() {  
                public void onClick(View v) {  
                     soap = new SoapObject(namespace, METHOD_NAME);  
               PropertyInfo p1 = new PropertyInfo();  
               p1.setName("sCountryISOCode");  
               p1.setValue(txtNome.getText().toString());  
               p1.setType(String.class);  
               soap.addProperty(p1);  
               envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);  
               //envelope.dotNet = true;   
               envelope.setOutputSoapObject(soap);  
               transporte = new AndroidHttpTransport(URL);  
               progress = ProgressDialog.show(ExemploWSActivity.this, "Carregando", "Aguarde...", true, false);  
                     Thread th = new Thread(ExemploWSActivity.this);  
                     th.start();  
                }  
           });  
      }  
      public void run() {  
           try {  
                transporte.call(SOAP_ACTION, envelope);  
                resposta = (SoapPrimitive) envelope.getResponse();  
                drawable = loadIMG(resposta.toString());  
                handler.sendEmptyMessage(0);  
           } catch (Exception ex) {  
                Log.d("Erro = ", ex.getMessage());  
           }  
      }  
      private Drawable loadIMG(String url) {  
           try {  
                InputStream is = (InputStream) new java.net.URL(url).getContent();  
                Drawable d = Drawable.createFromStream(is, "src name");  
                return d;  
           } catch (Exception e) {  
                return null;  
           }  
      }  
      private Handler handler = new Handler() {  
           @Override  
           public void handleMessage(Message msg) {  
                progress.dismiss();  
                imgView.setImageDrawable(drawable);  
           }  
      };  
 }  


pronto!

para baixar o jar.
https://code.google.com/p/ksoap2-android/downloads/detail?name=ksoap2-android-assembly-2.4-jar-with-dependencies.jar&can=2&q=


Vitor Yudi Hansen

Salvando Login do Aplicativo Android

Depois de muito tempo, vou colocar um post,
mostrando como salvar os dados de login de um aplicativo android.

Primeiramente,
vamos colocar
no nosso layout
activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:tools="http://schemas.android.com/tools"  
   style="@android:style/Theme.Dialog"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
   android:gravity="right"  
   android:paddingBottom="@dimen/activity_vertical_margin"  
   android:paddingLeft="@dimen/activity_horizontal_margin"  
   android:paddingRight="@dimen/activity_horizontal_margin"  
   android:paddingTop="@dimen/activity_vertical_margin"  
   tools:context=".MainActivity"  
    >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignParentLeft="true"  
     android:layout_alignParentTop="true"  
     android:text="Usuário"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
   <TextView  
     android:id="@+id/textView2"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignLeft="@+id/txtUser"  
     android:layout_below="@+id/txtUser"  
     android:layout_marginTop="17dp"  
     android:text="Senha"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
   <EditText  
     android:id="@+id/txtUser"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignLeft="@+id/textView1"  
     android:layout_alignParentRight="true"  
     android:layout_below="@+id/textView1"  
     android:ems="10"  
      >  
     <requestFocus />  
   </EditText>  
   <EditText  
     android:id="@+id/txtPass"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignLeft="@+id/textView2"  
     android:layout_alignRight="@+id/txtUser"  
     android:layout_below="@+id/textView2"  
     android:ems="10"  
     android:inputType="textPassword" >  
   </EditText>  
   <CheckBox  
     android:id="@+id/checkBox1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignLeft="@+id/txtPass"  
     android:layout_alignRight="@+id/txtPass"  
     android:layout_below="@+id/txtPass"  
     android:layout_marginTop="22dp"  
     android:text="Salvar dados."   
     android:checked="true"  
     />  
   <Button  
     android:id="@+id/button1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:layout_alignParentLeft="true"  
     android:layout_alignParentRight="true"  
     android:layout_below="@+id/checkBox1"  
     android:layout_marginTop="31dp"  
     android:text="Login"   
     android:onClick="Logar_Click"  
     />  
 </RelativeLayout>  

Feito isso,precisamos verificar se existe alguma informação gravada..

para isso, vou criar uma classe onde terá o método de verificar se exite a informação gravada, e um método para pegar essa informação
vamos lá:
Utilizamos a classe SharedPreferences, para salvar preferencias e consultar as mesmas.

 import android.content.Context;  
 import android.content.SharedPreferences;  
 import android.content.SharedPreferences.Editor;  
 import android.preference.PreferenceManager;  
 import android.util.Log;  
 public class Utils {  
      private SharedPreferences prefs;  
      private Editor editor;  
      public void saveStringPreferences(String key, String value, Context ctx ){  
           try {  
                prefs = PreferenceManager.getDefaultSharedPreferences(ctx);  
                editor = prefs.edit();  
                editor.putString(key, value);  
                editor.commit();  
           } catch (Exception e) {  
                Log.getStackTraceString(e);  
           }  
      }  
      public String getStringPreferences(String key, Context ctx ){  
           prefs = PreferenceManager.getDefaultSharedPreferences(ctx);  
           return prefs.getString(key, "");  
      }  
 }  


a Classe SharedPreferences se você quiser aprender um pouco mais sobre ela.
http://developer.android.com/reference/android/content/SharedPreferences.html

feito o metodo, vamos consumir ele na activity.


 import android.app.Activity;  
 import android.app.ProgressDialog;  
 import android.os.Bundle;  
 import android.view.View;  
 import android.widget.CheckBox;  
 import android.widget.EditText;  
 import Utils;  
 public class MainActivity extends Activity {  
      static final String KEY_USERNAME = "username";  
      static final String KEY_PASSWORD = "password";  
      private ProgressDialog progress;  
      private EditText usuario;  
      private EditText senha;  
      private Utils utils;  
      private CheckBox checkBox;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     usuario = (EditText)findViewById(R.id.txtUser);  
     senha = (EditText)findViewById(R.id.txtPass);  
     checkBox = (CheckBox)findViewById(R.id.checkBox1);  
     utils = new Utils();  
     String username = utils.getStringPreferences(KEY_USERNAME,this);  
     String password = utils.getStringPreferences(KEY_PASSWORD,this);  
     senha.setText(password);  
     usuario.setText(username);  
   }  
   public void Logar_Click(View v){  
        utils = new Utils();  
        if(checkBox.isChecked()){  
             utils.saveStringPreferences(KEY_USERNAME, usuario.getText().toString(), this);  
             utils.saveStringPreferences(KEY_PASSWORD, senha.getText().toString(), this);  
        }else{  
             utils.saveStringPreferences(KEY_USERNAME, "", this);  
             utils.saveStringPreferences(KEY_PASSWORD, "", this);  
        }

        //chama o login.
   }  
 }  

Pronto!

você já grava o usuário e a senha, caso ele queira, e caso não, vc salva "" .

Fácil e pratico!



Vitor Yudi Hansen

domingo, 4 de março de 2012

App Androd - Catecismo Igrja Católica

Pessoal criei um aplicativo android com o catecismo da igreja católica.

o valor está $1

segue o link
https://market.android.com/details?id=br.com.hsti&feature=search_result#?t=W251bGwsMSwxLDEsImJyLmNvbS5oc3RpIl0.

foi feito com o sdk android mesmo!

att,

Vitor Yudi Hansen

terça-feira, 1 de novembro de 2011

Android – Video/Music player exemplo (do disco ou de uma url)


segue classe para visualizar video no andoir :

package org.apache.android;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.webkit.URLUtil;
import android.widget.EditText;
import android.widget.ImageButton;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class VideoPlayer extends Activity implements OnErrorListener,
        OnBufferingUpdateListener, OnCompletionListener,
        MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
    private static final String TAG = "VideoPlayer";

    private MediaPlayer mp;
    private SurfaceView mPreview;
    private EditText mPath;
    private SurfaceHolder holder;
    private ImageButton mPlay;
    private ImageButton mPause;
    private ImageButton mReset;
    private ImageButton mStop;
    private String current;

    /**
     * Called when the activity is first created.
     */
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        setContentView(R.layout.main);

        // Set up the play/pause/reset/stop buttons
        mPreview = (SurfaceView) findViewById(R.id.surface);
        mPath = (EditText) findViewById(R.id.path);
        mPlay = (ImageButton) findViewById(R.id.play);
        mPause = (ImageButton) findViewById(R.id.pause);
        mReset = (ImageButton) findViewById(R.id.reset);
        mStop = (ImageButton) findViewById(R.id.stop);

        mPlay.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                playVideo();
            }
        });
        mPause.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                if (mp != null) {
                    mp.pause();
                }
            }
        });
        mReset.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                if (mp != null) {
                    mp.seekTo(0);
                }
            }
        });
        mStop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                if (mp != null) {
                    mp.stop();
                    mp.release();
                }
            }
        });

        // Set the transparency
        getWindow().setFormat(PixelFormat.TRANSPARENT);

        // Set a size for the video screen
        holder = mPreview.getHolder();
        holder.setCallback(this);
        holder.setFixedSize(400, 300);
    }

    private void playVideo() {
        try {
            final String path = mPath.getText().toString();
            Log.v(TAG, "path: " + path);

            // If the path has not changed, just start the media player
            if (path.equals(current) && mp != null) {
                mp.start();
                return;
            }
            current = path;

            // Create a new media player and set the listeners
            mp = new MediaPlayer();
            mp.setOnErrorListener(this);
            mp.setOnBufferingUpdateListener(this);
            mp.setOnCompletionListener(this);
            mp.setOnPreparedListener(this);
            mp.setAudioStreamType(2);

            // Set the surface for the video output
            mp.setDisplay(mPreview.getHolder().getSurface());

            // Set the data source in another thread
            // which actually downloads the mp3 or videos
            // to a temporary location
            Runnable r = new Runnable() {
                public void run() {
                    try {
                        setDataSource(path);
                    } catch (IOException e) {
                        Log.e(TAG, e.getMessage(), e);
                    }
                    mp.prepare();
                    Log.v(TAG, "Duration:  ===>" + mp.getDuration());
                    mp.start();
                }
            };
            new Thread(r).start();
        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage(), e);
            if (mp != null) {
                mp.stop();
                mp.release();
            }
        }
    }

    /**
     * If the user has specified a local url, then we download the
     * url stream to a temporary location and then call the setDataSource
     * for that local file
     *
     * @param path
     * @throws IOException
     */
    private void setDataSource(String path) throws IOException {
        if (!URLUtil.isNetworkUrl(path)) {
            mp.setDataSource(path);
        } else {
            URL url = new URL(path);
            URLConnection cn = url.openConnection();
            cn.connect();
            InputStream stream = cn.getInputStream();
            if (stream == null)
                throw new RuntimeException("stream is null");
            File temp = File.createTempFile("mediaplayertmp", "dat");
            String tempPath = temp.getAbsolutePath();
            FileOutputStream out = new FileOutputStream(temp);
            byte buf[] = new byte[128];
            do {
                int numread = stream.read(buf);
                if (numread <= 0)
                    break;
                out.write(buf, 0, numread);
            } while (true);
            mp.setDataSource(tempPath);
            try {
                stream.close();
            }
            catch (IOException ex) {
                Log.e(TAG, "error: " + ex.getMessage(), ex);
            }
        }
    }

    public void onError(MediaPlayer mediaPlayer, int what, int extra) {
        Log.e(TAG, "onError--->   what:" + what + "    extra:" + extra);
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }

    public void onBufferingUpdate(MediaPlayer arg0, int percent) {
        Log.d(TAG, "onBufferingUpdate called --->   percent:" + percent);
    }

    public void onCompletion(MediaPlayer arg0) {
        Log.d(TAG, "onCompletion called");
    }

    public void onPrepared(MediaPlayer mediaplayer) {
        Log.d(TAG, "onPrepared called");
    }

    public boolean surfaceCreated(SurfaceHolder surfaceholder) {
        Log.d(TAG, "surfaceCreated called");
        return true;
    }

    public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
        Log.d(TAG, "surfaceChanged called");
    }

    public void surfaceDestroyed(SurfaceHolder surfaceholder) {
        Log.d(TAG, "surfaceDestroyed called");
    }
}


ta ai!

abssssss

Vitor Yudi Hansen

Tutorial Flex para Android em 90 minutos

vale a pena conferir o tutorial do site:

http://coenraets.org/blog/2010/12/tutorial-flex-for-android-in-90-minutes/

bem interessante para quem está inicando!
abs

Vitor Yudi Hansen

quinta-feira, 27 de outubro de 2011

Usando o Google Maps e GPS no Android

O mercado para Android está cada vez mais agitado, e a cada dia aparecem novas informações animadoras: a quantidade de novos aplicativos saltou de 2 mil para 9 mil por mês.
Isso não ocorre sem razão. A capacidade de usar os serviços do Google através do Android é excelente. Um dos capítulos mais interessantes do curso FJ-57 de Google Android é o que envolve fazer um mashup com o Google Maps, o GPS do seu celular e dados que gravamos nele. Essa tarefa se revela inicialmente bastante simples, e depois ainda possibilita inserir uma série de listeners e overlays para poder customizar o uso dos mapas.
Dado que você já sabe preparar o ambiente para um HelloWorld no Android, crie uma nova aplicação com uma activity chamada MapasSimples. Você vai precisar adquirir uma API KEY do Google Maps para poder ter a permissão de usá-lo em sua aplicação. Para isso, gere um MD5 da sua chave através do keytool (ou mesmo através do plugin do Android, usando a mesma do procedimento que você usa para assinar suas aplicações) para depois se inscrever no Google Android Maps API Key.

Depois desse passo, o Google vai ter fornecer uma chave de acesso, juntamento com um trecho de XML para ser usado na sua tela. No nosso caso, o main.xml ficará parecido com:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="SUA CHAVE DO GOOGLE MAPS"
/>
</LinearLayout>
Agora precisamos alterar a nossa atividade MapasSimples para, em vez de estender Activity, ser filha de MapActivity:
public class MapasSimples extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
No nosso manifesto, precisamos avisar dentro de application que vamos usar a biblioteca do Google Maps:
<uses-library android:name="com.google.android.maps" />
E também precisamos permitir acesso a Internet, dentro da tag de manifest:
<uses-permission android:name=
"android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name=
"android.permission.INTERNET" />
Isso já é o suficiente para abrir o Google Maps, mas queremos ir além. Podemos adicionar diversos overlays ao mapa, para colocar informações como as pizzarias mais próximas, a bússola, a nossa posição atual de acordo com o GPS ou mesmo a posição de seus amigos.
Dentro do método onCreate pode adicionarmos um novo overlay ao mapa, que vai conter tanto a bússola quanto a nossa própria localização (ou de acordo com o GPS ou de acordo com a triangularização de antenas), de maneira simples:
MapView mapView = (MapView) findViewById(R.id.map_view) ;
mapView.setClickable(true) ;
MyLocationOverlay mlo = new MyLocationOverlay(this, mapView) ;
mlo.enableCompass() ;
mlo.enableMyLocation() ;
mapView.getOverlays().add(mlo) ;
Pronto! Você já pode gerar sua aplicação obtendo o seguinte resultado rodando em um celular Google

tirado do blog da Caelum

http://blog.caelum.com.br/usando-o-google-maps-e-gps-no-android/

Vitor Yudi Hansen

Usando seu próprio banco de dados SQLite em aplicações Android

A maioria dos exemplos e tutoriais de aplicações Android por ai assumem que você quer criar e preencher seu banco de dados em tempo de execução e não usará um banco de dados independente com sua aplicação.
O metódo que será mostrado aqui usa um banco de dados SQLite de sua pasta “assets” e copia em um banco de dados no caminho de sua aplicação, de forma que a API SQLiteDatabase possa abrir e acessar o banco normalmente.

1. Preparando o arquivo de banco de dados SQLIte.
Assumindo que você já tem um banco de dados sqlite criado, precisamos fazer algumas modificações nele. Se você não tiver um gerenciador sqlite instalado, recomendo baixar o programa OpenSource SQLite Database Browser disponível para Win/Mac/Linux.
Abra seu banco de dados e adicione uma nova tabela chamada “android_metadata”, executando a seguinte sentença SQL:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US')
Agora insira uma única linha com o texto ‘en_US’ na tabela “android_metadata”:
INSERT INTO "android_metadata" VALUES ('en_US')
Depois , é necessário renomear o campo id primário de suas tabelas para “_id” para que o Android saiba qual a chave primária de suas tabelas. Você pode facilmente fazer essas mudanças no SQLite Database Browser pressionando o botão “edit table”, e depois selecionando a tabela que quer editar e finalmente selecionando o campo que quisr renomear.
Depois de renomear o campo id de todas as tabelas para “_id”, e adicionar a tabela “android_metadata”, seu banco de dados está pronto para ser usado em sua aplicação Android.

Nota: na imagem podemos ver as tabelas “Categories” e “Content” com o campo id renomeado para “_id” e a tabela “android_metadata” adicionada.
2. Copiando, abrindo e acessando seu banco de dados em sua aplicação Android.
Agora, coloque o banco de dados na pasta “asset” de seu projeto e crie uma classe Database Helper baseada na calsse SQLIteOpenHelper do pacote “android.database.sqlite”.
Crie a sua classe DatabaseHelper dessa forma:
public class DataBaseHelper extends SQLiteOpenHelper{
 
    //The Android's default system path of your application database.
    private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";
 
    private static String DB_NAME = "myDBName";
 
    private SQLiteDatabase myDataBase;
 
    private final Context myContext;
 
    /**
     * Constructor
     * Takes and keeps a reference of the passed context in order to access to the application assets and resources.
     * @param context
     */
    public DataBaseHelper(Context context) {
 
     super(context, DB_NAME, null, 1);
        this.myContext = context;
    }
 
  /**
     * Creates a empty database on the system and rewrites it with your own database.
     * */
    public void createDataBase() throws IOException{
 
     boolean dbExist = checkDataBase();
 
     if(dbExist){
      //do nothing - database already exist
     }else{
 
      //By calling this method and empty database will be created into the default system path
               //of your application so we are gonna be able to overwrite that database with our database.
         this.getReadableDatabase();
 
         try {
 
       copyDataBase();
 
      } catch (IOException e) {
 
          throw new Error("Error copying database");
 
         }
     }
 
    }
 
    /**
     * Check if the database already exist to avoid re-copying the file each time you open the application.
     * @return true if it exists, false if it doesn't
     */
    private boolean checkDataBase(){
 
     SQLiteDatabase checkDB = null;
 
     try{
      String myPath = DB_PATH + DB_NAME;
      checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
     }catch(SQLiteException e){
 
      //database does't exist yet.
 
     }
 
     if(checkDB != null){
 
      checkDB.close();
 
     }
 
     return checkDB != null ? true : false;
    }
 
    /**
     * Copies your database from your local assets-folder to the just created empty database in the
     * system folder, from where it can be accessed and handled.
     * This is done by transfering bytestream.
     * */
    private void copyDataBase() throws IOException{
 
     //Open your local db as the input stream
     InputStream myInput = myContext.getAssets().open(DB_NAME);
 
     // Path to the just created empty db
     String outFileName = DB_PATH + DB_NAME;
 
     //Open the empty db as the output stream
     OutputStream myOutput = new FileOutputStream(outFileName);
 
     //transfer bytes from the inputfile to the outputfile
     byte[] buffer = new byte[1024];
     int length;
     while ((length = myInput.read(buffer))>0){
      myOutput.write(buffer, 0, length);
     }
 
     //Close the streams
     myOutput.flush();
     myOutput.close();
     myInput.close();
 
    }
 
    public void openDataBase() throws SQLException{
 
     //Open the database
        String myPath = DB_PATH + DB_NAME;
     myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    }
 
    @Override
 public synchronized void close() {
 
         if(myDataBase != null)
          myDataBase.close();
 
         super.close();
 
 }
 
 @Override
 public void onCreate(SQLiteDatabase db) {
 
 }
 
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
 }
 
        // Add your public helper methods to access and get content from the database.
       // You could return cursors by doing "return myDataBase.query(....)" so it'd be easy
       // to you to create adapters for your views.
 
}
E é isso!
Agora você pode criar uma instância da classe DatabaseHelper e chamar os metódos createDataBase() e openDataBase(). Lembre de mudar o texto “YOUR_PACKAGE” para o namespace de sua aplicação (por exemplo: com.exemplename.myapp) na string DB_PATH.
Traduzido de www.reigndesign.com


Vitor Yudi Hansen

terça-feira, 26 de julho de 2011

Android Aplicativo tela inteira

Para deixar seu aplicativo com tela inteira,

basta utilizar

    requestWindowFeature(Window.FEATURE_NO_TITLE);
         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN); 


no metodo onCreate():
antes do setContentView();
Vitor Yudi Hansen

Criar Album Android

Vou postar um exemplo de album, bem fácil!

SwitcherActivity.java
package com.mobsandgeeks.ise;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;


public class SwitcherActivity extends Activity implements ViewSwitcher.ViewFactory, OnItemSelectedListener {
            
            private Gallery gallery;
            private ImageSwitcher imageSwitcher;
            
            private ImageAdapter ia; 


            @Override
            public void onCreate(Bundle savedInstanceState) {
                        requestWindowFeature(Window.FEATURE_NO_TITLE);
                         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN); 


                        
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.main);


                        gallery = (Gallery) findViewById(R.id.gallery);


                        ia = new ImageAdapter(this);
                        gallery.setAdapter(ia);
                        
                        //Event listeners
                        gallery.setOnItemSelectedListener(this);
            }
            
            private class ImageAdapter extends BaseAdapter {
                        private Context context;
                        
                        private ImageAdapter(Context context) {
                                    this.context = context;
                        }
                        
                        private int[] IMAGE_IDS = {
                                    R.drawable.android, R.drawable.gingerbread, R.drawable.honeycomb,
                                    R.drawable.lg_optimus, R.drawable.nexus_one, R.drawable.nexus_s,
                                    R.drawable.oha
                        };


                        public int getCount() {
                                    return IMAGE_IDS.length;
                        }


                        public Object getItem(int position) {
                                    return IMAGE_IDS[position];
                        }


                        public long getItemId(int position) {
                                    return position;
                        }


                        public View getView(int position, View convertView, ViewGroup parent) {
                                    ImageView iv = new ImageView(context);
                                    iv.setImageResource(IMAGE_IDS[position]);
                                    iv.setLayoutParams(new Gallery.LayoutParams(840, 400));
                                    return iv;
                        }
            }


            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        
            }


            public void onNothingSelected(AdapterView<?> parent) {
            }


            public View makeView() {
            
        return null; 
            }
}

main.xml
<CODE>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
</CODE>

Pronto!!!

É só colocar as fotos no na pasta drawable

=D



Vitor Yudi Hansen

quarta-feira, 20 de julho de 2011

Android reconhecendo GestureDetector

Neste Post Vamos aprender a trabalhar com GestureDetector.
Para reconhecer movimentos feitos no touch do celular.
Vamos lá:
[CODE]

package de.scrolltest;
//1ºFazer os imports das classes
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.view.MotionEvent;//Importante
import android.view.GestureDetector.OnGestureListener;//Importante
import android.view.GestureDetector;
import android.widget.TextView;
import android.graphics.Color;
public class GestureDetectorExemplo extends Activity implements OnGestureListener
{  
 //Vamos declarar as variaveis que utilizaremos nesse teste

    private LinearLayout main;  
    private TextView viewA; //Texto que mostrará nossa ação
 /*Essas variaveis são para reconhecer a distancia mínima que poderemos “percorrer” com o dedo */
    static final int SWIPE_MIN_DISTANCE = 120;
    static final int SWIPE_MAX_OFF_PATH = 250;
    static final int SWIPE_THRESHOLD_VELOCITY = 200;
   
    private GestureDetector gestureScanner;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
       
        gestureScanner = new GestureDetector(this);
        /*Montamos a parte visual do nosso aplicativo/*
        main = new LinearLayout(this);
        main.setBackgroundColor(Color.GRAY);
        main.setLayoutParams(new LinearLayout.LayoutParams(320,480));
       
        viewA = new TextView(this);
        viewA.setBackgroundColor(Color.YELLOW);
        viewA.setTextColor(Color.BLACK);
        viewA.setTextSize(16);
        viewA.setLayoutParams(new LinearLayout.LayoutParams(320,80));
        main.addView(viewA);
       
        setContentView(main);
    }
   
    @Override
    public boolean onTouchEvent(MotionEvent me)
    {
     return gestureScanner.onTouchEvent(me);
    }
   
    @Override
    public boolean onDown(MotionEvent e)
    {
     viewA.setText("-" + "DOWN" + "-");
     return true;
    }
   
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
     viewA.setText("-" + " " + "-");
     return true;
    }
   
    @Override
    public void onLongPress(MotionEvent e)
    {
     viewA.setText("-" + "Longo Aperto" + "-");
    }
   
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
    {
   
   
      if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
       viewA.setText("-" + "SCROOL Esquerda" + "-");
           } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE) {
            viewA.setText("-" + "SCROLL Direita" + "-");
           }
   
     return true;
    }
   
    @Override
    public void onShowPress(MotionEvent e)
    {
     viewA.setText("-" + " Apertou " + "-");
    }   
   
    @Override
    public boolean onSingleTapUp(MotionEvent e)   
    {
     viewA.setText("-" + "Apertou rapido" + "-");
     return true;
    }
}
[/CODE]


Vitor Yudi Hansen