domenica 25 novembre 2012
Inviare SMS in Android
Inviare SMS via programma in Android e' particolarmente semplice (2 linee) indicando solo il numero di cellulare ed il testo
------------------------------------------------------------------
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(nr_cellulare, null, testo_sms, null, null);
venerdì 23 novembre 2012
Comunicazione UDP tra PC e Android
In questo post viene descritta la possibilita' di stabilire una connessione UDP tra il telefono Android in funzione Server ed un PC mediante script Python
per il lato server (Android) si deve creare un programma che inserisca tra i permessi di AndroidManifest.xml la seguente riga
<uses-permission android:name="android.permission.INTERNET" />
per il lato server (Android) si deve creare un programma che inserisca tra i permessi di AndroidManifest.xml la seguente riga
<uses-permission android:name="android.permission.INTERNET" />
sulla funzione OnCreate si puo' creare il server UDP come riportato nell'esempio seguente (porta di connessione 12345 e lunghezza massima del pacchetto 1024 bytes
------------------------------------------------------------
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String lText;
byte[] lMsg = new byte[1024];
DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
DatagramSocket ds = null;
while (true)
{
try {
ds = new DatagramSocket(12345); //porta del server UDP 12345
//riceve il pacchetto
ds.receive(dp);
lText = new String(lMsg, 0, dp.getLength());
Log.i("Richiesta", lText);
//manda la risposta
byte[] b = "Risposta".getBytes();
DatagramPacket sendPacket = new DatagramPacket(b, b.length, dp.getAddress(), dp.getPort());
ds.send(sendPacket);
//manda la risposta
byte[] b = "Risposta".getBytes();
DatagramPacket sendPacket = new DatagramPacket(b, b.length, dp.getAddress(), dp.getPort());
ds.send(sendPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
}
}
------------------------------------------------------------
creato il server si passa al lato client in Python da mettere sul PC Desktop
il programma manda un pacchetto al server ed il server lo mette nel file di log
--------------------------------------------------
from socket import socket, AF_INET, SOCK_DGRAM
data = 'Richiesta'
port = 12345
hostname = 'localhost'
udp = socket(AF_INET,SOCK_DGRAM)
#manda la richiesta
#manda la richiesta
udp.sendto(data, (hostname, port))
#aspetta e stampa la risposta
data, server = udp.recvfrom(1024)
print data
#aspetta e stampa la risposta
data, server = udp.recvfrom(1024)
print data
--------------------------------------------------
per poter effettuare le prove con l'emulatore di Android ci si collega via telnet alla shell dell'emulatore(telnet localhost 5554) e si digita
redir add udp:12345:12345
che reindirizza le chiamate alla porta localhost:12345 del Desktop alla porta 12345 dell'emulatore dove gira il server
Leggere SMS in Android
Per leggere gli SMS contenuti nel telefono e' sufficiente inserire la regola in AndroidManifest.xml
<uses-permission android:name="android.permission.READ_SMS"/>
e poi usare il codice seguente
-----------------------------------------------------------------------
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(uriSms, new String[]{"_id", "address", "date", "body"},null,null,null);
cursor.moveToFirst();
while (cursor.moveToNext())
{
String id = cursor.getString(0);
String address = cursor.getString(1);
String body = cursor.getString(3);
Log.d("testo",id + " "+address + " "+body);
}
giovedì 22 novembre 2012
Convertire stringhe in datetime in Python
per lavoro ho avuto la necessita' di leggere in input un file testo con una serie di stringhe rappresentanti delle letture effettuate nel tempo e dover capire quale fosse la differenza di tempo tra le acquisizioni
Il metodo piu' semplice e' quindi convertire le stringhe in un formate datetime e poi effettuare le operazioni
In Python la cosa si risolve cosi
---------------------------------------------
from datetime import datetime
data1 = datetime.strptime('Jun 27 2012 7:14PM', '%b %d %Y %I:%M%p')
data2 = datetime.strptime('Jun 27 2012 7:16PM', '%b %d %Y %I:%M%p')
diff = data2 - data1
print diff
print diff.seconds
---------------------------------------------
Il metodo piu' semplice e' quindi convertire le stringhe in un formate datetime e poi effettuare le operazioni
In Python la cosa si risolve cosi
---------------------------------------------
from datetime import datetime
data1 = datetime.strptime('Jun 27 2012 7:14PM', '%b %d %Y %I:%M%p')
data2 = datetime.strptime('Jun 27 2012 7:16PM', '%b %d %Y %I:%M%p')
diff = data2 - data1
print diff
print diff.seconds
---------------------------------------------
che riporta come risulta 0:02:00 ovvero l'attesa differenza di 2 minuti e la differenza espressa in secondi (120)
mercoledì 14 novembre 2012
Snail Mail da Google
E' troppo curioso ricevere una lettera di carta da Google per non pubblicarlo
fra parentesi e' un pubblicita' per AdWords
fra parentesi e' un pubblicita' per AdWords
martedì 13 novembre 2012
Slax
Sempre alla ricerca di creare un sistema Linux da portarmi a giro come Live Cd mi sono imbattuto in SLAX una derivata da Slackware
la caratteristica piu' interessante e' quella di non fornire una ISO prestabilita ma di poter creare la propria Linux Box con la funzione Slax Build
In estrema sintesi si puo' partire da un sistema di base ed aggiungere i vari moduli di interesse (io mi sono creato un sistema per la programmazione) fino ad scaricare un file .iso con tutto montato
Il sistema non e' perfetto e le dipendenze devono essere in qualche caso corrette a mano ma in fin dei conti e' poca cosa
Interessante e' anche la possibilita' di salvare la configurazione dei moduli su un file per poterlo correggere o riprendere la selezione in un secondo tempo
![]() |
| Boot di Slax |
la caratteristica piu' interessante e' quella di non fornire una ISO prestabilita ma di poter creare la propria Linux Box con la funzione Slax Build
In estrema sintesi si puo' partire da un sistema di base ed aggiungere i vari moduli di interesse (io mi sono creato un sistema per la programmazione) fino ad scaricare un file .iso con tutto montato
Il sistema non e' perfetto e le dipendenze devono essere in qualche caso corrette a mano ma in fin dei conti e' poca cosa
![]() |
| Il modulo CodeBlocks aggiunto alla ISO |
Creare una Live-Cd partendo da una installazione funzionante
Una delle cose che ho sempre desiderato e' quella di potermi portare dietro i programmi e le impostazioni che mi servono anche se non ho dietro il portatile
Ho cosi' provato un po' di soluzioni per poi decidere il sistema riportato da Remastersys
Non volendo sacrificare il portatile mi sono creato una macchina virtuale minimale partendo da una installazione standard di Ubuntu Server 12.04 (Remastersys non gestisce Debian Testing e quindi ho escluso di provare su Debian) per poi aggiungere openbox
apt-get install openbox obconf obmenu openbox-themes startx xterm
in questo modo si ha un ambiente grafico minimale
E' giunto il momento di creare una iso del nuovo sistema prima aggiungendo ad apt la chiave del repository di Remastersys
wget -O - http://www.remastersys.com/ubuntu/remastersys.gpg.key | apt-key add -
dopo si modifica il file /etc/apt/sources.list aggiungendo la riga
deb http://www.remastersys.com/ubuntu precise main
seguito dall'aggiornamento di apt
apt-get update
e
apt-get install remastersys
e' giunto il momento di creare il file iso includendo anche i file personali (e non solo quelli di sistema)
il file viene generato nella directory /home/remastersys
dopo un (bel) po' viene creato il file iso che puo' essere masterizzato o messo su chiavetta USB e distribuito
Al riavvio si presenta questo menu
e tutto funziona magnificamente
Ho cosi' provato un po' di soluzioni per poi decidere il sistema riportato da Remastersys
Non volendo sacrificare il portatile mi sono creato una macchina virtuale minimale partendo da una installazione standard di Ubuntu Server 12.04 (Remastersys non gestisce Debian Testing e quindi ho escluso di provare su Debian) per poi aggiungere openbox
apt-get install openbox obconf obmenu openbox-themes startx xterm
in questo modo si ha un ambiente grafico minimale
E' giunto il momento di creare una iso del nuovo sistema prima aggiungendo ad apt la chiave del repository di Remastersys
wget -O - http://www.remastersys.com/ubuntu/remastersys.gpg.key | apt-key add -
dopo si modifica il file /etc/apt/sources.list aggiungendo la riga
deb http://www.remastersys.com/ubuntu precise main
seguito dall'aggiornamento di apt
apt-get update
e
apt-get install remastersys
e' giunto il momento di creare il file iso includendo anche i file personali (e non solo quelli di sistema)
remastersys backup nome_file.iso
il file viene generato nella directory /home/remastersys
dopo un (bel) po' viene creato il file iso che puo' essere masterizzato o messo su chiavetta USB e distribuito
Al riavvio si presenta questo menu
e tutto funziona magnificamente
Iscriviti a:
Post (Atom)
FigSpec FS-60CL
A lavoro mi hanno rifilato questo sensore iperspettrale cinese (pushbroom 400-1000 nm con larghezza di banda di 0.5 nm compatibile con DJI M...
-
Aggiornamento questo e' la risposta degli sviluppatori First of all, almost all operating systems on both mobile and laptop/desktop n...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...





