mercoledì 11 aprile 2012
Sistema di riferimento per la grafica
Il sistema di riferimento delle coordinate per la grafica e' con l'origine 0,0 in alto a sinistra, con l'asse X orizzontale e l'asse Y verticale (per quanto possa avere senso dire orizzontale e verticale in qualcosa che puoi rigirare come vuoi...) comunque l'immagine spiega meglio di mille parole
Semplice grafica in Android
seguendo l'esempio trovato qui si puo' scrivere una mappa di pixel a schermo.
Prima di copiare il codice nel Layout deve essere trascintata una ImageView
Il risultato e' un punto rosso a coordinate 10,10 su sfondo nero
----------------------------------------------------------------------------------
ImageView view = (ImageView) findViewById(R.id.imageView1);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.RGB_565);
Paint paint = new Paint();
paint.setColor(Color.RED);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.BLACK);
canvas.drawPoint(10, 10, paint);
view.setImageBitmap(bitmap);
Prima di copiare il codice nel Layout deve essere trascintata una ImageView
Il risultato e' un punto rosso a coordinate 10,10 su sfondo nero
----------------------------------------------------------------------------------
ImageView view = (ImageView) findViewById(R.id.imageView1);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.RGB_565);
Paint paint = new Paint();
paint.setColor(Color.RED);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.BLACK);
canvas.drawPoint(10, 10, paint);
view.setImageBitmap(bitmap);
giovedì 5 aprile 2012
Problemi con aggiornamento ADT da 16 a 17
Giusto ieri ho effettuato l'aggiornamento da ADT 16 a 17 a causa del concomitante aggiornamento dell'SDK di Android. Il problema e' che improvvisamente alcuni programmi a cui stavo lavorando hanno deciso di non compilarsi piu' con un imperscrutabile errore
fortunatamente sono capitato qui dove viene spiegato che
error Binary XML file line #7. Error inflating class org.osmdroid.views.MapView
fortunatamente sono capitato qui dove viene spiegato che
- i file jar delle librerie esterne DEVONO risiedere nella directory libs
- non e' piu' necessario aggiungere alla Build Path le librerie esterne (le Android Depedencies vengono aggiornate da sole)
Semplice gestione touch
Per avere una semplice gestione (non multitouch o gesture) della pressione sullo schermo si puo' aggiungere all'Activity il metodo OnTouchEvent
public boolean onTouchEvent(MotionEvent event)
{ int x = (int)event.getX();
int y = (int)event.getY();
Log.d("s",Integer.toString(x));
Log.d("s",Integer.toString(y));
}
public boolean onTouchEvent(MotionEvent event)
{ int x = (int)event.getX();
int y = (int)event.getY();
Log.d("s",Integer.toString(x));
Log.d("s",Integer.toString(y));
}
martedì 3 aprile 2012
Vestizione OpenStreetMap
Nel tentativo di trovare la migliore cartografia gratuita per la mia applicazione Roadbook ha fatto qualche prova con MOBAC. Alla versione 1.9.6 sono disponibili tre vestizioni di Openstreetmap (l'unica cartografia gratuita) tra cui e' comparsa 4umaps.eu che riporta le isoipse...l'ideale per un programma di navigazione nel bosco
4umaps.eu |
Mapquest |
Mapnik |
lunedì 2 aprile 2012
Connettersi a MySql da Android
Android ha varie possibilita' di salvare dati persistenti ma non c'e' una via semplice per connettersi a database esterni in particolare MySql
Usando JDBC ho avuto diversi problemi (il sorgente si compila bene ma non riesce a connettersi) per cui un sistema alternativo e' quello di passare per un intermediario dato da uno script in PHP
per prima cosa si deve impostare il permesso
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
il server e' 192.168.0.1 e lo script si trova in http://192.168.0.1/zenith/insert.php
vengono passate due variabili (piatto e tavolo) popolate
-------------------------------------------------------------------------------------------
InputStream is;
String piatto = spin.getSelectedItem().toString();
//String tavolo = tav_txt.getText().toString();
String tavolo = spin_tav.getSelectedItem().toString();
ArrayList <NameValuePair> nameValuePairs = new ArrayList <NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("piatto",piatto));
nameValuePairs.add(new BasicNameValuePair("tavolo",tavolo));
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.0.1/zenith/insert.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.d("Zenith","Dato salvato");
Toast.makeText( getApplicationContext(),R.string.riuscito,Toast.LENGTH_SHORT ).show();
// suona per conferma
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
}
catch(Exception e)
{
Toast.makeText( getApplicationContext(),R.string.non_riuscito,Toast.LENGTH_SHORT ).show();
Log.e("Zenith", "Error in http connection"+e.toString());
}
-------------------------------------------------------------------------------------------
la struttura del database Mysql e' data dal codice
-------------------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `comande` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`tavolo` int(11) NOT NULL,
`piatto` text NOT NULL,
`data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
-------------------------------------------------------------------------------------------
lo script Php insert.php invece risulta essere
-------------------------------------------------------------------------------------------
<?
$hostname_localhost ="localhost";
$database_localhost ="zenith";
$username_localhost ="xxxxxxxxx";
$password_localhost ="xxxxxxxxxxx";
var_dump($_REQUEST);
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db("zenith");
$sql_string = "INSERT INTO comande (id,tavolo,piatto,data) VALUES (NULL,'".$_REQUEST['tavolo']."','".$_REQUEST['piatto']."',CURRENT_TIMESTAMP)";
$sql=mysql_query($sql_string);
mysql_close();
?>
Iscriviti a:
Post (Atom)
Change Detection with structural similarity
L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
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...