clariandroid
clariandroid
Aprendiendo Android
38 posts
Don't wanna be here? Send us removal request.
clariandroid · 8 years ago
Text
Cambiar wallpaper
Cambiar wallpaper con Wallpaper Manager:
WallpaperManager myWallpaperManager = WallpaperManager                        .getInstance(MainActivity.this);
               try {
                   Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper);                    myWallpaperManager.setBitmap(bitmap);
                   // Show a toast message on successful change                    Toast.makeText(MainActivity.this, "Wallpaper successfully changed", Toast.LENGTH_SHORT).show();
               } catch (IOException e) {                    // TODO Auto-generated catch block                }
Cambiar wallpaper con intent:
Intent intent = new Intent();               intent.setAction(Intent.ACTION_ATTACH_DATA);                intent.addCategory(Intent.CATEGORY_DEFAULT);                intent.setDataAndType(uri, "image/*");                intent.putExtra("mimeType", "image/*");                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);                startActivity(Intent.createChooser(intent, "Select service:"));
Hay que obtener la URI de la imagen:
Uri uri = Uri.parse("android.resource://"+ getApplicationContext().getPackageName()+"/drawable/wallpaper.jpg" ); Uri uri = Uri.parse("android.resource://com.example.clarisa.establacer/drawable/wallpaper"); Uri uri = Uri.parse("android.resource://com.example.clarisa.establecer/R.drawable.wallpaper");
Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +                        "://" + getResources().getResourcePackageName(R.drawable.wallpaper)                        + '/' + getResources().getResourceTypeName(R.drawable.wallpaper) + '/' + getResources().getResourceEntryName(R.drawable.wallpaper) );
Esta uri siempre funciona:
Uri uri = ContactsContract.Contacts.CONTENT_URI;
Al final para que obtener la uri guardamos la imagen en dispositivo. 
File f = new File(Environment.getExternalStorageDirectory(), "walpaper2.png");                Uri uri = Uri.fromFile(f);
0 notes
clariandroid · 8 years ago
Text
Fragments
Activities normales:
@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         //COSAS
Fragments
Enlazar layout
@Override public View onCreateView(LayoutInflater inflater,                 ViewGroup container,                 Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_listado, container, false); }
@override public void onActivityCreated(Bundle state) {      super.onActivityCreated(state);      //COSAS }
0 notes
clariandroid · 8 years ago
Text
Si el emulador no tiene conexión a Internet
(Esto hay que hacerlo con el emulador apagado)
- Abrir la shell en EMULATOR: cd C:\Users\CLARISA\AppData\Local\Android\sdk\emulator
- Para ver la lista de emuladores:  emulator -list-avds
- Cambiar dns:
emulator.exe -avd Nexus_6_API_22 -dns-server 8.8.8.8
(Y se iniciará el emulador)
0 notes
clariandroid · 8 years ago
Text
Visor PDF
https://deepshikhapuri.wordpress.com/2017/02/15/display-pdf-file-inside-my-android-application/
Para usar el visor PDF hay que actualizar el gradle.
0 notes
clariandroid · 8 years ago
Text
Listener Listas
Para el ListView usar ClickListener y para Spinner ItemSelectedListener.
0 notes
clariandroid · 8 years ago
Text
Nuevo proyecto con conexión a BD y Google Maps
BD Servidor externo:
- Es necesario copiar la libreria mysql-connector y ponerla en libs
- Poner permisos de Internet en el manifest
Google Maps:
- Ir a https://console.developers.google.com/apis
- Crear nuevo proyecto, crear credenciales, restringir clave (poner paquete y huella digital)
- Habilitar API
0 notes
clariandroid · 8 years ago
Text
Enlazar librería
1. Copiamos la carpeta de la librería en la carpeta principal de nuestro proyecto (donde está el build, app, etc).
2. La carpeta saldrá en Project pero no en Android.
3. Vamos a settings.gradle y ponemos: 
include ':app' include 'library'
4. Vamos a Project Structure -> Dependencies -> Module Dependency. Añadimos nuestra librería.
5. Vamos a graddle properties y copiamos lo que tenía el ejemplo que usa la librería.
0 notes
clariandroid · 8 years ago
Text
Librerías
Mirar librerías que se pueden añadir
0 notes
clariandroid · 8 years ago
Text
Google Maps API
Ya funciona nuestra aplicación básica con mapa. Para ello necesitábamos Google Play Services y una clave de google. Para cada nuevo proyecto, necesitamos una clave nueva. Podemos usar eventos ,cámaras, marcadores, etc. 
Claves:
https://console.developers.google.com/apis/dashboard?project=stunning-symbol-159110&hl=ES&duration=P14D
Referencia:
https://developers.google.com/maps/documentation/android-api/intro?hl=es-419
Para más utilidades podemos utilizar Google Maps Android API utility library.
Android Developers:
https://developers.google.com/maps/documentation/android-api/utility/?hl=es-419
Info de la libreria: 
http://googlemaps.github.io/android-maps-utils/
Tutorial: 
https://www.youtube.com/watch?v=helfiJykClo
http://cursoandroidstudio.blogspot.com.es/2015/05/android-maps-utils.html
Para ver el ejemplo de la librería, nos lo descargamos de GitHub y abrimos el demo. 
0 notes
clariandroid · 8 years ago
Text
Google Maps API
https://www.youtube.com/watch?v=mdCRxEn540U
0 notes
clariandroid · 8 years ago
Text
Como usar la shell de Android
1. Añadir una variable de entorno. Equipo > Configuración avanzada del sistema > Opciones del sistema > Variables de entorno 
2. En PATH: C:android/android-sdk-windows/platform-tools
3. Abrir la consola cmd en modo administrador.
4. Con el comando cd acceder a la carpeta: cd C:\android-sdk-windows\platform-tools
5. Para ejecutar los comandos adb: 
adb devices -> NO FUNCIONA
adb.exe devices -> FUNCIONA
0 notes
clariandroid · 8 years ago
Text
Conexión a BD Remota
¡¡MUY IMPORTANTE!!
En el manifest: <uses-permission android:name="android.permission.INTERNET" />
Y el mysql connector!!
ip: 10.0.2.2 puerto: 3306 usuario: root password: “”
Para conectarse a una bd en un servidor en ip pongo el dominio donde se aloja la bd.
0 notes
clariandroid · 8 years ago
Text
Listas Spinner: Coger un item.
String itemsito = adaptador2.getItem(0);             Toast.makeText(getApplicationContext(),itemsito,Toast.LENGTH_SHORT).show();
0 notes
clariandroid · 8 years ago
Text
Listas Spinner dinámicas
OPCIÓN 1: Actualizar el array y añadir un nuevo adaptador
1. Crear un ArrayList de datos y añadirlos nuevos.
ArrayList<String> datos_series = new ArrayList<String>(); 
datos_series.add(nombre);
2. Cuando tengamos el ArrayList, creamos un nuevo adaptador y lo añadimos a la lista.
ArrayAdapter<String> adaptador2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, datos_series);
adaptador2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
lista.setAdapter(adaptador2);
OPCIÓN 2: Actualizar el adaptador directamente.
1. Creamos la lista, el adaptador y el array.
ArrayList<String> datos = new ArrayList<String>();
ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, datos);
adaptador.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);           lista.setAdapter(adaptador);
2. Añadimos los elementos al adaptador.
adaptador.add (nombre);
adaptador2.notifyDataSetChanged(); (no hace falta)
0 notes
clariandroid · 8 years ago
Text
Insertar BD externa
CLASE MAIN ACTIVITY
public class MainActivity extends AppCompatActivity {    private static String DB_PATH = "/data/data/com.example.clarisa.intentosbd/databases/";    private static String DB_NAME = "db_calc";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //Crear base de datos        BaseDeDatos db2 = new BaseDeDatos(this, DB_NAME, null, 1);        try {            db2.createDataBase();            db2.openDataBase();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        //Manejador ??        SQLiteDatabase db = db2.getWritableDatabase();        if(db != null)        {            db.execSQL("INSERT INTO android_metadata (locale) VALUES ( 'probando' )");            Toast toast = Toast.makeText(getApplicationContext(), "FUNCIONA", Toast.LENGTH_SHORT);            toast.show();            //Cerramos la base de datos            //db.close();        }    } }
CLASE BASE DE DATOS:
public class BaseDeDatos extends SQLiteOpenHelper {    private static String DB_PATH = "/data/data/com.example.clarisa.intentosbd/databases/";    private static String DB_NAME = "db_calc";    private SQLiteDatabase myDataBase;    private final Context myContext;    //Constructor    public BaseDeDatos(Context contexto, String nombre, CursorFactory factory, int version) {        super(contexto, nombre, factory, version);        this.myContext = contexto;    }    @Override    public void onCreate(SQLiteDatabase db) {        // No hacemos nada aqui    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // Cuando haya cambios en la estructura deberemos    }    //Creamos un nuevo metodo para importar nuestra BD    public void createDataBase() throws IOException {        boolean dbExist = checkDataBase();        if (dbExist) {            //Si existe, no haemos nada!//        }        else {            // Llamando a este método se crea la base de datos vacía en la ruta            // por defecto del sistema de nuestra aplicación por lo que            // podremos sobreescribirla con nuestra base de datos.            this.getReadableDatabase();            try {copyDataBase();}            catch (IOException e) {throw new Error("Error copiando database");}        }    }    private boolean checkDataBase() {        SQLiteDatabase checkDB = null;        try {            String myPath = DB_PATH + DB_NAME;            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);        }        catch (SQLiteException e) {            // Base de datos no creada todavia        }        if (checkDB != null) {checkDB.close();}        return checkDB != null ? true : false;    }    //ESTO NO SE PA QUE LO QUEREMOS    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();    }    private void copyDataBase() throws IOException {        OutputStream databaseOutputStream = new FileOutputStream("" + DB_PATH + DB_NAME);        InputStream databaseInputStream;        byte[] buffer = new byte[1024];        int length;        databaseInputStream = myContext.getAssets().open("basedatos.db");        while ((length = databaseInputStream.read(buffer)) > 0) {            databaseOutputStream.write(buffer);        }        databaseInputStream.close();        databaseOutputStream.flush();        databaseOutputStream.close();    } }
0 notes
clariandroid · 8 years ago
Text
contentValues
Para trabajar con pares de valores podemos usar content values.
//Crear pares de valores    public ContentValues toContentValues() {        ContentValues values = new ContentValues();        values.put(LawyerEntry.ID, id);        values.put(LawyerEntry.NAME, name);        values.put(LawyerEntry.SPECIALTY, specialty);        values.put(LawyerEntry.PHONE_NUMBER, phoneNumber);        values.put(LawyerEntry.BIO, bio);        values.put(LawyerEntry.AVATAR_URI, avatarUri);        return values;    }
public long mockLawyer(SQLiteDatabase db, Lawyer lawyer) {        return db.insert(LawyerEntry.TABLE_NAME, null, lawyer.toContentValues());    }
0 notes
clariandroid · 8 years ago
Text
execSQL o métodos propios
Podrías usar el comando execSQL() para ejecutar una sentencia INSERT, pero como estás recibiendo datos externos, es mejor usar insert() para evitar inyecciones SQL.
Utilizamos insert() para insertar y query() para consultas.
0 notes