Posted tagged ‘app’

Android como plataforma de desarrollo

25 abril, 2019

Hola a todos,

Trayéndoles las siguientes notas del curso de Android, ahora vamos a conocer a Android como plataforma de desarrollo. Conoceremos las herramientas con las que podemos producir aplicaciones Android, cómo se administra la ejecución de las aplicaciones, cómo y qué se debe tomar en cuenta al desarrollar una aplicación.

Aquí las notas: http://www.nachintoch.mx/teaching/mobile_dev/android-framework.pdf

Anuncios

Cómo hacer una aplicación web con Ruby on Rails

10 marzo, 2016

Hola a todos!

Sin mucho más que decir, les comparto un “tutorial” que elaboré para conocer Ruby y cómo empezar a desarrollar una aplicación hecha con Rails:

http://www.nachintoch.mx/teaching/tech_risk/2mar-IntroaRuby.pdf

Espero que les sea de utilidad!

Android: liberar memoria moviendo aplicaciones como Google Drive y WhatsApp al almacenamiento externo (¡Root no necesario!)

18 octubre, 2014

Saludos!

Les traigo un nuevo post para liberar memoria de un dispositivo Android; esta vez, moviendo apps al medio de almacenamiento externo.

Esto es muy fácil y se puede hacer por dos medios:

1 – Si tienes las herramientas de desarrollo de Google para Android instaladas en una computadora, ejecuta adb en una consola con el siguiene comando (si no las tienes o prefieres seguir pasos que no requieran del uso de una computadora ve al segundo método más abajo):

* Primero vamos a comprobar que tu dispositivo es visible. Para esto, ejecuta

adb devices

Si tu dispositivo aparece en la lista, ahora vamos a entrar a la consola del dispositivo, ejecuta

adb shell

Captura de pantalla de 2014-10-17 19:43:17

 

2 – Los siguientes pasos, son independientes de la opción que elijas. Esta otra, no requiere de las herramientas de desarrollo de Google, si no solamente que tengas instalado un emulador de terminal. Yo prefiero Terminal Emulator que pueden descargar desde Google Play en el siguiente enalce: https://play.google.com/store/apps/details?id=jackpal.androidterm Esta opción nos va a permitir mover aplicaciones usando únicamente el mismo dispositivo sin necesidad de utilizar una computadora.

Ya sea que hayamos entrado a la consola del sistema operativo (Android) por medio de “adb shell” o abriendo una aplicación como Terminal Emulator, ahora ejecuta en la terminal

pm set-install-location 2

Nota, en este caso; podrías obtener un error. Si eso pasa, sustituye “set-intall-location” por “setInstallLocation”.

Captura de pantalla de 2014-10-18 01:35:06

SC20141018-013613

Hecho esto, salimos del shell usado

exit

Ahora, vamos al gestor de aplicaciones nativo del sistema operativo. Seleccionamos la aplicación “no movible” que queremos pasar al almacenamiento externo. La opción para mover la aplicación al almacenamiento externo debería ahora estar habilitada. Damos un toque sobre él y Android moverá la aplicación al medio de almacenamiento externo. Así habremos liberado más memoria interna del dispositivo ¡Yey!

SC20141018-013332

Estos procedimientos son muy útiles; y más considerando que no se requiere root para efectuarlos, por lo que cualquier usuario puede repetirlos sin problema (en teoría).

Cuando hayamos terminado, es muy recomendable volver a entrar al shell de Android (por el método que prefieras) y volver a usar set-install-location, pero esta vez con el parámetro 0 en lugar de 2. Así, las aplicaciones serán instaladas en la memoria adecuada y podrá evitarnos comportamientos extraños que pueden afectar nuestra experiencia de usuario.

He realizado satisfactoriamente estos procedimientos, utilizando mi Samsung Galaxy Ace (GT-S5830M) con ambos métodos y moviendo WhatsApp a la memoria microSD; pero son bastante generales y deberían funcionar de igual manera con cualquier dispositivo Android: sea tablet, smatphone, etc… Sin embargo, no conozco las consecuencias que puede traer el mover ciertas aplicaciones a la memoria, y todo efecto será tu responsabilidad.

Dejemos fluir nuestra imaginación para hacer máximo provecho de los nuevos espacios en memoria que tendremos disponibles 😀

Liberar memoria interna en Android: Cómo desinstalar las aplicaciones que vienen por defecto instaladas y cómo mover aplicaciones del espacio de memoria de usuario a espacio de memoria de sistema

17 octubre, 2014

Hola a todos!

Aquí en una racha que me dio por escribir nuevos posts, quiero compartirles un método para: primero borrar aplicaciones que vienen instaladas por defecto en los dispositivos y cómo obtener más espacio en la memoria interna moviendo las aplicaciones a espacio de sistema.

Comencemos por explicar ¿Qué es la memoria de sistema?

En informática, una partición es un bloque de memoria virtual que “vive” en un medio de almacenamiento de datos. Estas particiones, suelen tener distintos formatos con los que agrupan y almacenan archivos y carpetas; para comodidad del usuario. Algunos formatos populares son FAT y NTFS (comúnmente utilizados en sistemas Windows), pero existen otros como Swap, Ext4, MFS, etc… Aunque un sistema de archivos ocupe toda una unidad de almacenamiento completa, aún así se le llama partición. Normalmente, los sistemas operativos son capaces de manejar hasta cuatro particiones en una misma unidad de disco. Cada partición se presenta al usuario como medios de almacenamiento diferentes, aun cuando residan en el mismo dispositivo físico (sin embargo, esto no es en todos los casos).

Android divide la memoria interna de los dispositivos en dos; mediante el uso de particiones: una partición es propiedad del sistema operativo y no es posible manipularla por métodos “tradicionales”; esta es la memoria del sistema. La otra es propiedad del usuario y es posible hacer y deshacer con ella casi como queramos con métodos convencionales. Esta última es el espacio de memoria del usuario. Normalmente, la memoria del sistema es una partición pequeña de unos cuantos cientos de megabytes del total de la memoria interna del dispositivo, que apenas alcanzan para alojar el sistema operativo; así como un poco de espacio extra adicional para que puedan embeber aplicaciones en el sistema (previsto para uso exclusivo del distribuidor de los aparatos) y para actualizaciones.

Para nuestra desgracia, los distribuidores de dispositivos Android (por ejemplo, smartphones en México; Telcel, IUSACELL, Movistar…) venden los dispositivos con aplicaciones preinstaladas que nosotros como usuarios no podemos eliminar por métodos tradicionales. Como propietarios del teléfono, deberíamos tener derecho a hacer con él como queramos (ya que al pagar por el, es nuestro completamente); por lo que les traigo este tutorial para eliminar las aplicaciones que vienen instaladas por defecto.

Voy a escribir este tutorial basándome en el procedimiento que realicé con mi Samsung Galaxy Ace (GT-S5830M). No tuve ningún problema para hacerlo y la verdad es que los resultados me tienen bastante satisfecho. Sin embargo, estos procedimientos (excepto el root), son genéricos y debería ser posible reproducirlos en cualquier dispositivo, sin importar el modelo; sea smartphone o sea una tablet.

Primero que nada, debes ser root para tener los privilegios que se necesitan para realizar las operaciones necesarias. Si poseen un Galaxy Ace, pueden cómo rootear este dispositivo en el enlace siguiente: https://nachintoch.wordpress.com/2013/06/15/rootear-el-samsung-galaxy-ace-gt-s5830m/

Siendo ya root, vamos a instalar la aplicación Titanium Backup * root desde Google Play: https://play.google.com/store/apps/details?id=com.keramidas.TitaniumBackup

Habiendo instalado Titanium, abrimos la aplicación. Una vez que estemos en la pantalla principal, deslizamos un dedo sobre la pantalla de derecha a izquierda para revelar una lista con todas las aplicaciones instaladas en el teléfono. Con ésta lista, podemos seleccionar la aplicaciones que queremos desinstalar y desinstalarla (valga la rebusnancia). ¿Porqué preferir Titanium Backup sobre otras que nos permiten desinstalar aplicaciones de sistema? Muchas veces encontraremos aplicaciones de nombre similar a la que realmente queremos desinstalar (por ejemplo, widgets de reloj que podemos confundir con el reloj del sistema). Si herramos desinstalando una aplicación que no queríamos desinstalar (o que no debíamos incluso), podemos ANTES DE DESINSTALARLA, hacer un respaldo dando un toque sobre el botón copiar que muestra Titanium cuando seleccionamos una aplicación. Así, si la regamos, podemos restaurar la aplicación eliminada.

Sugiero ampliamente que antes de desinstalar cualquier aplicación le hagas un respaldo. Y siempre que termines una sola desinstalación, reinicies el dispositivo. Así, si después de desinstalar una aplicación notamos un comportamiento “extraño” o inadecuado del sistema, podemos restaurarla para deshacer los efectos. El reinicio nos sirve para evitar posibles estados extraños que podrían ocurrir. Con gran poder, viene una gran responsabilidad. Ten mucho cuidado y se muy responsable con las aplicaciones que desinstalas dentro del espacio de sistema, ya que sólo tú serás responsable de los efectos que pueda tener estas prácticas.

Bien. Ya hemos desinstalado esas feas y estorbozas aplicaciones que el distribuidor le puso al telefono antes de que fuera nuestro. Muchos de ustedes estarán pensando “Ya borre toda esa porquería y la memoria del dispositivo sigue estando tan llena como antes de empezar, ¿que pex!”. Vimos al principio que la memoria interna del dispositivo se divide en espacio de sistema y espacio de usuario. El el espacio de memoria de sistema no es contabilizado en la memoria interna del sistema que muestra el sistema operativo. Puesto que por medios convencionales, los usuarios no tenemos forma de hacer uso de ese espacio de memoria, no tiene caso que se nos hiciera saber cuanto espacio disponible hay en él… A menos, que seas root 🙂

Borrando la porquería que Telcel había preinstalado en mi Galaxy Ace (que afortunadamente liberé para cambiar de compañía telefónica; también hay un post sobre eso aquí: https://nachintoch.wordpress.com/2014/10/17/como-liberar-un-samsung-gt-s5830m-de-la-red), liberé aproximadamente 50Mb que para mucho me habían de servir. El problema, es que estos viven en espacio de sistema. Así que con esto, pasamos a la parte dos:

Cómo mover aplicaciones de espacio de usuario a espacio de sistema.

Para aprovechar el espacio libre que tengamos en el espacio de sistema, podemos mover aplicaciones que hayamos instalado; como “usuarios mortales”, para que queden embebidas en el sistema; como si fueran las aplicaciones preinstaladas con las que viene el dispositivo cuando lo compramos. El espacio que ocupaban estas aplicaciones movidas, quedará libre en el espacio de usuario, por lo que podremos hacer nuevo uso del mismo; ¿genial no? Con esto, al grano; veamos cómo se hace:

Vamos a instalar desde Google Play la aplicación App2ROM que podemos encontrar aquí: https://play.google.com/store/apps/details?id=com.lrenault.tools.apps2rom

Esta aplicación nos permite mover las aplicaciones de espacio de usuario instaladas en la memoria del dispositivo (no almacenamiento externo) a la memoria del sistema. Para mover aplicaciones instaladas en un medio de almacenamiento externo, primero debemos moverlas a la memoria interna del dispositivo. Ya que la hayamos instalado la abrimos. Una vez que estemos sobre la pantalla principal, de la lista que se nos muestra, buscamos la aplicación que queremos mover al espacio de memoria del sistema. Podemos empezar por mover la mismísima Apps2ROM. La seleccionamos y damos un toque sobre el botón “mover”. Al terminar de mover la aplicación, nos preguntará si deseamos reiniciar el dispositivo. Siempre que movamos una aplicación, seleccionemos el botón para reiniciar el dispositivo. Omitir este paso, podría producir comportamientos indeseados en el sistema. Con esto, liberaremos espacio en el espacio de memoria que sí será reconocido por el sistema; incrementando la memoria como si de hecho hubiéramos desinstalado estas aplicaciones.

Nunca hagan caso omiso a las advertencias que les dé la aplicación. Yo les recomiendo que si Apps2ROM les advierte que una app no correrá si la mueven a espacio de sistema o que no se recomienda mover por la configuración interna de la app; así como si llenan la memoria hasta el tope límite que trae por default, no muevan dicha aplicación; ya que insisto: con gran poder viene gran responsabilidad y todos los resultados serán su responsabilidad.

Espero esto les sea de utilidad. Con el poder de un Android rooteado; el límite es su imaginación.

Android: cómo crear y manejar un mapa usando la Google Maps API v2; compartible con Android Froyo (2.2) y superiores

1 septiembre, 2013

Hola de nuevo!!

Ahora vamos a ver cómo crear  manejar un mapa usando la Google Maps API for Android v2. Es my importante que antes de empezar con los pasos aquí listados, primero realicen los pasos en la guí para dar de alta un servicio de Google; usando Google Maps Android API v2 como el servicio a dar de alta.

Bien, una vez que tenemos el servicio registrado; es hora de poner manos (dedos) a la obra:

Primero que nada es necesario registrar permisos que va a usar la API de Google Maps; éstos los requiere para descargar los mapas de la red y usar los servicios de localización (como GPS) para usar un mapa dinámico con la ubicación del usuario: Vamos a incluir los siguientes permisos y características a nuestro manifiesto; todas éstas etiquetas son hijas de <manifest>:

<uses-feature
android:glEsVersion=”0x00020000″
android:required=”true” />
<uses-permission android:name=”android.permission.WRITE_CALENDAR” />
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=”android.permission.ACCES_WIFI_STATE” />
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
<uses-permission android:name=”com.google.android.providers.gsf.permission.READ_GSERVICES” />
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />
<uses-permission android:name=”com.nombredetuapp.MAPS_RECEIVE”/>
<permission
android:name=”com.nombredetuapp.permission.MAPS_RECEIVE”
android:protectionLevel=”signature” />

Recuerda cambiar <<nombredetuapp>> por el nombre completo de tu aplicación (recuerda que ésto es el paquete de Java; por ejemplo com.mx.nachintoch.example)

Ahora, debemos importar la biblioteca de los servicios de Google Play. En Eclipse procedemos de la siguiente manera: Archivo > Import > Existing Android code into workspace. Recordemos; que en la guía de activación de servicios, éstos quedan incorporados al Android SDK; y se encuentra en <directorio_de_tu_android_sdk>/extras/google/google_pay_services/libproject/google_play_services_lib

Éste es el archivo que debemos importar.

En Eclipse; aún necesitamos referencia éste código desde nuestro proyecto en el que lo vamos a utilizar. Para ello, nos vamos a las propiedades de nuestro proyecto > Preferencias > Resource y en la parte inferior; donde dice “Library“, seleccionamos “add” y  escogemos la recién importada en el paso previo.

Para poder usar la Google Maps Android API v2 con dispositivos anteriores a Android 3.0 y iguales o superiores a 2.2; es necesario que nuestro espacio de trabajo cuente con la referencia a la biblioteca “android-support-v4.jar“. En Eclipse, podemos importarlo de la misma manera que lo hicimos para la biblioteca de lose servicios de Google Play; excepto que éste fichero jar lo encontraremos en <directorio_de_tu_android_sdk>/extras/android/support/v4/android-support-v4.jar

Bien con todo lo anterior hecho; a programar!

Creamos una nueva Layout donde mostraremos el mapa. Podemos usar como raíz una relative layout y agregar más monerias extras a la pantalla del mapa; como menús, animaciones, botones, imágenes, etc… Sin embargo; no recomiendo invadir el área del mapa con otras cosas. Para definir el área del mapa en pantalla; agregamos la siguiente etiqueta:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"/>

Ahora, creamos una nueva clase de java; que será la actividad responsable de manejar nuestro mapa.

public class MainActivity extends android.support.v4.app.FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
}
En principio; ésto es todo lo que necesitamos para visualizar un mapa simple con unos botones de zoom. Hagámoslo más interesante.
Agreguemos los siguientes import a nuestra clase:

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

Y definamos un atributo de clase del siguiente tipo de datos:

private GoogleMap map;

Ahora, en nuestro onCreate(Bundle); agreguemos el siguiente código, el cual nos permite obtener una referencia al mapa que se estará visualizando en pantalla:

map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

Podemos cambiar el aspecto del mapa usando los siguientes modificadores:

  • map.setMapType(GoogleMap.MAP_TYPE_NORMAL); //Muestra un mapa estándar <<tipo guía roji>>
  • map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); //Muestra la vista de satélite (fotografías reales)
  • map.setMapType(GoogleMap.MAP_TYPE_TERRIAN); //Muestra el mapa con terreno
  • map.setMapType(GoogleMap.MAP_TYPE_HYBRID); //mezcla de normal y satélite

Podemos posicionar el mapa en una vista inicial sobre un lugar específico y con un zoom determinado usando:

CameraPosition position = new CameraPosition.Builder().target(new LatLong(0,0)).zoom(19).build();
CameraUpdate update = CameraUpdateFactory.newCameraPosition(position);
map.animateCamera(update);

target() recibe una coordenada donde se va a centrar la vista, zoom aleja o acerca la cámara del suelo de acuerdo al flotante dado. Las coordenadas podemos conocerlas fácilmente usando el Google Maps al que tenemos acceso desde cualquier PC. Ubicamos un lugar en el planeta y damos click derecho sobre él y seleccionamos “¿Qué hay aquí?” En la barra de búsqueda aparecerán las coordenadas de ese lugar.

Los CameraUpdate nos permiten modificar con una animación la vista del mapa.

Podemos agregar marcadores sobre el mapa usando:

map.addMarker(new MarkerOptions().position(new LatLng(0,0)).title(“This is a test marker”));

Podemos obtener la posición del usuario, rastreándola con el celular, el wi-fi ó GPS

map.setMyLocationEnabled(true);

Y rastreamos con:

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null){
onLocationChanged(location);
}//actualiza la localización
locationManager.requestLocationUpdates(provider, 20000, 0, this);

Lo más importante de éste fragmento de código es la última instrucción; que indica el intervalo de tiempo con el que se va a actualizar la posición del dispositivo sobre el globo. Note que es muy similar al uso de sensores; y como en los sensores, necesitamos un Listener; por lo que nuestra clase deberá implementar la interfaz LocationListener:

public class MapActivity extends android.support.v4.app.FragmentActivity implements LocationListener {

Los métodos a implementar son los siguientes:

@Override
public void onLocationChanged(Location location) {
}//onLocationChanged
@Override
public void onProviderDisabled(String provider) {
}//onProviderDisabled
@Override
public void onProviderEnabled(String provider) {
}//onProviderEnabled
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}//onStatusChanged

Aún hay muchas cosas que podemos hacer con nuestro mapa; como poner un botón en la Layout raíz de la vista y hacer que el  mapa vuele automáticamente a ubicaciones predefinidas; o incluso a la posición de otros usuarios que estén compartiendo por P2P, SMS o algún otro medio.

Podemos crear todo tipo de aplicaciones con ésto: desde un clon de Google Maps, hasta un add-on para redes sociales donde podamos ver la posición de nuestros contactos.

El límite; como siempre lo he dicho, es tu imaginación ;¬)

Nueva app para Android

23 julio, 2013

Hola a todos!

En ésta ocación les presento una app con la cual pueden convertir su dispositivo Android en una lámpara de mano. Para ello; aprovechará al máximo la luz de su pantalla y el flash de la cámara. La pantalla principal cuenta con un switch interactivo que activa o desactiva un contador automático que inicia la luz por sí mismo; aunque puede iniciarse en cualquier momento manualmente. Pueden escoger entre 3 diferentes tipos de switch e intervalos de tiempo para iniciar la luz automática de 3 a 5 segundos.

Resulta muy útil para escenarios de poca luz; cómo puede ocurrir en una emergencia y muy versátil

https://play.google.com/store/apps/details?id=com.mx.nachintoch.deviceaslantern&hl=es

Android: más sobre sensores; ejemplo de uso

1 junio, 2013

Saludos!

Hace poco publiqué mi biblioteca para el manejo de sensores.. Pero que tal un ejemplo de uso? Bueno, les dejo la liga para descarga de una app que implementa la biblioteca. Aquí les dejo la liga del código fuente.

Espero que les sea de utilidad. Si quieren pueden dejar mensajes para abrir un tema sobre el uso de sensores.

La app está protegida con una licencia GNU General Public License, siéntanse libres de redistribuirla.


A %d blogueros les gusta esto: