sábado, 30 de mayo de 2015

Enviar SMS en Android (JAVA)

Primero agregamos el permiso en el AndroidManifest.xml arriba de la etiqueta application

<uses-permission android:name="android.permission.SEND_SMS" />

Mi manifest me quedó así:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hector.simplemassivesms" >
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Para enviar SMS hay dos vias:
Usando SmsManager:

SmsManager mySMS = SmsManager.getDefault();
String destination = "16501234567";
String msg = "Enviando mensaje!";
mySMS.sendTextMessage(destination, null, msg, null, null);


O usando intent

String SENT_SMS_FLAG = "SENT_SMS";
String DELIVER_SMS_FLAG = "DELIVER_SMS";

Intent sentIn = new Intent(SENT_SMS_FLAG);
PendingIntent sentPIn = PendingIntent.getBroadcast(this,0,sentIn,0);

Intent deliverIn = new Intent(SENT_SMS_FLAG);
PendingIntent deliverPIn
                   = PendingIntent.getBroadcast(this,0,deliverIn,0);

domingo, 24 de mayo de 2015

Instalar conky en Debian / Linux

Existimos muchos, que en todo momento nos gusta estar siempre atentos sobre el estado del uso de los recursos de hardware de nuestro equipo.

Para facilitar esta tarea existe un paquete en los repositorios llamado conky, según definición tomada (https://wiki.archlinux.org/index.php/Conky_(Espa%C3%B1ol)#Consejos_y_trucos):

Es un monitor de sistema para los sistemas X Window. Está disponible para GNU/Linux y FreeBSD. Es un software libre liberado bajo los términos de la licencia GPL. Conky es capaz de monitorear distintas variables de sistema, incluyendo CPU, memoria, swap, espacio de disco, temperaturas, subidas, bajadas, mensajes de sistema, y mucho más. Es completamente configurable, la configuración puede ser un poco difícil de entender, pero es bastante posible realizarla. Conky es un fork de torsmo.


Para instalar, sólo basta hacer, en modo root:

apt-get install conky


Como plus, instala este paquete que te permite detectar todos los sensores usados en tu PC, especialmente los de temperatura de los CPU's.

apt-get install lm-sensors

Una vez instalado el paquete, es necesario realizar un script de detección de que sensores posees en equipo, eso lo realizaremos de la siguiente manera, en modo root ejecutar:

sensors-detect 

y escribir en YES/NO -> yes y ENTER. (Esto permitirá monitorear todos los sensores que se hallan detectado).

Nota: Importa mucho el uso de este paquete, puesto que en la configuración visual del Conky que dejo a continuación, se monitorea la temperatura de los núcleos de los procesadores.


Este archivo se encuentra en  -->  /etc/conky/conky.conf  , modificar con:

# -----------------------------------------------------------------------------------
# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_type override
own_window_hints below

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# fiddle with window
use_spacer yes
use_xft yes

# Update interval in seconds
update_interval 1.0

#Maximum Width of Window
#maximum_width 320
maximum_width 600

# Minimum size of text area
# minimum_size 250 5

# Draw shades?
draw_shades no

# Text stuff
draw_outline no # amplifies text if yes
draw_borders no
#font arial
xftfont DejaVu Sans:size=15
uppercase no # set to yes if you want all text to be in uppercase

# Stippled borders?
stippled_borders 3

# border margins
border_margin 5

# border width
border_width 6

# Default colors and also border colors, grey90 == #e5e5e5
default_color FFFFCC

own_window_colour brown
own_window_transparent yes

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
gap_x 10
gap_y 10

# stuff after ‘TEXT’ will be formatted on screen

TEXT
$color
${color CC9900}SYSTEM ${hr 2}$color
$nodename $sysname $kernel on $machine $color
$uptime

${color CC9900}NETWORK (${addr wlan0}) ${hr 2}$color
Down: $color${downspeed wlan0} ${alignr}Up: ${upspeed wlan0}
Total: ${totaldown wlan0} ${alignr}Total: ${totalup wlan0}

${color CC9900}CPU ${hr 2}$color
Total CPU: ${cpu cpu0}%
${color 597DB2}${cpubar}$color
${cpugraph 000000 597DB2}
Core 1: ${freq 1} MHz        Temperature: $color ${exec sensors|grep 'Core 0'|awk '{print $3}'}
${cpu cpu1}% ${color 597DB2}${cpubar cpu1}$color
Core 2: ${freq 2} MHz        Temperature: $color ${exec sensors|grep 'Core 1'|awk '{print $3}'}
${cpu cpu2}% ${color 597DB2}${cpubar cpu2}$color

${color CC9900}MEMORY ${hr 2}$color
RAM Used: ${mem}/ ${memmax}
RAM: $memperc%  ${color FF6600} ${membar 6}$color
Swap: $swapperc%   ${color FF6600} ${swapbar 6}$color
${alignr}NAME               PID     CPU    MEM
${alignr}${color CCFFFF}${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${alignr}${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${alignr}${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${alignr}${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
${color CC9900}DISK ${hr 2}$color
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${color FFFF33} ${fs_bar 6 /}
# -----------------------------------------------------------------------------------


Solucionar "unable to load VirtualBox engine" Genymotion en Fedora 21

Si al intentar instalar  Genymotion en Fedora 21 te da el siguiente error: "unable to load VirtualBox engine"


Es porque no tienes bien configurado el VirtualBox. Para ello deberas instalar el kmod asociado a la versión del kernel instalado en tu fedora.



En mi caso el kernel es 3.19.5-200 por lo tanto instalo el paquete kmod-VirtualBox-3.19.5-200.fc21.x86_64.

dnf install kmod-VirtualBox-3.19.5-200.fc21.x86_64

Recomiendo instalar VirtualBox desde los repositorios de RPM Fusion

Instalar Genymotion en Fedora 21

ACTUALIZADO (2016):
EN el siguiente link está el tutorial de como instalar la ultima versión de genymorion en fedora 23

http://wannabe-programmer.blogspot.com/2016/04/instalar-genymotion-en-fedora-23-x8664.html


































Este es el turorial VIEJO:

















Para usar genymotion debemos tener instalado VirtualBox.
Yo recomiendo instalarlo desde los repositorios RPMFusion. Para instalar estos repos ejecuta:


su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'

Luego actualiza

dnf update 

Instala VirtualBox

dnf install VirtualBox 

Instala el paquete kmod de virtualbox correspondiente a tu versión del kernel. En mi caso mi versión de kernel es 3.19.5-200, por eso instalo kmod-VirtualBox-3.19.5-200

dnf install kmod-VirtualBox-VERSION-DEL-KERNEL.fc21.x86_64






Luego de tener virtualbox a punto debes descargar el binario de Genymotion desde la pag oficial. Prueba con el de ubuntu.



luego le damos permisos de ejecución e instalamos

chmod 777 ./genymotion-2.4.0_x64.bin
./genymotion-2.4.0_x64.bin -d /opt

Al final ejecutamos genymotion

./opt/genymotion/genymotion

miércoles, 20 de mayo de 2015

Solucion a "Unable to run mksdcard SDK tool." en Android Studio (Fedora 21)

Debes instalar lo siguiente antes de instalar Android Studio.

yum install compat-libstdc++-296.i686 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 ncurses-libs.i686

viernes, 1 de mayo de 2015

Ejemplo de QSettings

En este pequeño ejemplo veremos como obtener y guardar una configuración en el disco con QSettings.
Explicación:



Primero creamos el objeto de configuración. El primer parámetro es el grupo y el segundo la aplicación. Le puedes colocar cualquier nombre, solo debes tener en cuanta que cuando desees obtener valores de dicha configuración debes crear un objeto con los mismos parámetros.

QSettings settings("Group", "SMS");

Luego intentamos leer de la configuración. Puesto que en la primera corrida del programa todavia no hemos guardado nada entonces la variable scriptDelay valdrá 0.
En la segunda corrida valdrá 1000

int scriptDelay = settings.value("SMS/ScriptDelay").toInt();


Luego asignamos el valor de la configuración.

settings.setValue("SMS/ScriptDelay", 1000);



Este es el código de ejemplo:


#include <QCoreApplication>
#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSettings settings("Group", "SMS");
    int scriptDelay = settings.value("SMS/ScriptDelay").toInt();
    settings.setValue("SMS/ScriptDelay", 1000);
    qDebug()<<"scriptDelay = "<<scriptDelay;
    return a.exec();

}