Un aspetto carino e poco conosciuto dell'emulatore Android e' quello di poter simulare non solo telefoni generici ma anche anche modelli specifici ed in alcuni casi anche tablet.
Selezionando per esempio nell'SDK Manager il Galaxy Tab (attenzione, e' presente solo nella versione Android 2.2)
si avra' la possibilita' di creare una nuova macchina virtuale
con una emulazione dotata di risoluzione pari all'orginale
mercoledì 29 febbraio 2012
Syntax Highligthing su Blogger
Avevo voglia di rendere piu' carino il codice scritto sul blog sulla falsariga di phpBB..peccato che su Blogger questa funzione non e' presente.
Seguendo questo esempio si puo' impostare un comodo syntax highlighter
per prima cosa si deve modificare il layout di blogger introducendo le righe
per prima cosa si deve modificare il layout di blogger introducendo le righe
<link href="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js"> </script>
Successivamente si deve modificare il tag body aggiungendo<body onload='prettyPrint()'>Il codice deve essere inserito tra due pre
<pre class="prettyprint"> ...import android.media.AudioRecord; import android.media.MediaRecorder.AudioSource; import android.media.AudioFormat; class recorderThread extends Thread { public boolean recording; //variable to start or stop recording public int frequency; //the public variable that contains the frequency value "heard", it is updated continually while the thread is running. public recorderThread () { </pre>
giovedì 23 febbraio 2012
Html link in AlertDialog
Creare dei link all'interno di un AlertDialog non e' banale
Nell'esempio sottostante sono riportate in grassetto le modifiche rispetto al codice non Html; in particolare l'ultima riga deve essere necessariamente presente e dopo .show altrimenti i link saranno evidenziati ma inutilizzabili
--------------------------------------------------
AlertDialog.Builder conferma_canc = new AlertDialog.Builder(this);
conferma_canc.setTitle("Credits");
conferma_canc.setMessage(Html.fromHtml("App developed by Luca Innocenti (lucainnoc@gmail.com).<a href=\"http://github.com/c1p81\">Source Code Link</a>. "));
conferma_canc.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = conferma_canc.create();
alert.show();
((TextView) lert.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
--------------------------------------------------
Dimensioni dello schermo
Uno dei problemi di Android e' che, al contrario di IOs, puo' essere eseguito da una molteplicita' di hardware con caratteristiche differenti in particolar modo per quanto riguarda la risoluzione dello schermo.
Per gestire l'interfaccia visuale e' quindi necessario conoscere le dimensioni dello schermo che sono riportate in
-------------------------------------------------------------------
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
--------------------------------------------------------------------
Per gestire l'interfaccia visuale e' quindi necessario conoscere le dimensioni dello schermo che sono riportate in
-------------------------------------------------------------------
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
--------------------------------------------------------------------
Un programma, due Activity
Il concetto di Activity in Android e' piu' o meno quello di Form in Visual Basic ovvero un gestore di una finestra legata ad un ben preciso compito. Per creare piu' finestre all'interno della stessa attivita' si devono preparare diversi file di layout (nell'esempio sono grid1.xml e main.xml)
Dopo cio' si deve modificare il file Manifest per includere oltre alla schermata principale (main) anche la sottoschermata grid1.
------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.geo.munsell"
android:versionCode="2"
android:versionName="0.99" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".MunsellActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".grid1" android:label="@string/app_name"></activity>
</application>
</manifest>
------------------------------------------------------------
da main per aprire la schermata grid1 si esegue la chiamata
------------------------------------------------------------
Intent myIntent = new Intent(MunsellActivity.this, grid1.class);
startActivityForResult(myIntent, 0);
------------------------------------------------------------
Dove MunsellActivity e' l'Activity di main mentre grid1 e' la classe di grid1
Dopo cio' si deve modificare il file Manifest per includere oltre alla schermata principale (main) anche la sottoschermata grid1.
------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.geo.munsell"
android:versionCode="2"
android:versionName="0.99" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".MunsellActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".grid1" android:label="@string/app_name"></activity>
</application>
</manifest>
------------------------------------------------------------
da main per aprire la schermata grid1 si esegue la chiamata
------------------------------------------------------------
Intent myIntent = new Intent(MunsellActivity.this, grid1.class);
startActivityForResult(myIntent, 0);
------------------------------------------------------------
Dove MunsellActivity e' l'Activity di main mentre grid1 e' la classe di grid1
Soil Color Chart pubblicata su Android Market
Il programma Soil Color Chart e' stato sviluppato come ausilio per il geologo rilevatore per classificare il colore di un suolo senza la necessita' di portarsi in campagna il libro dei colori di riferimento.
Sono disponibili 115 colori con relativi codici definiti come rappresentativi di tutte le possibili combinazione di colore di rocce e suoli.
All'avvio il programma mostra una galleria di colori con sottostante codice. Si puo' navigare la galleria sia facendo scivolare a destra e sinistra il dito sui rettangoli di colore sia usando la barra in basso allo schermo.
Altrimenti e' possibile avere una differente visione usando l'Option Menu e selezionando la modalita' Grid View
In questo modo si ha una comparazione piu' immediata delle differenze cromatiche
cliccando su un colore si ha il relativo codice e nome
Per tornare alla finestra precedente e' sufficiente cliccare sul menu Escape
Sono disponibili 115 colori con relativi codici definiti come rappresentativi di tutte le possibili combinazione di colore di rocce e suoli.
All'avvio il programma mostra una galleria di colori con sottostante codice. Si puo' navigare la galleria sia facendo scivolare a destra e sinistra il dito sui rettangoli di colore sia usando la barra in basso allo schermo.
Altrimenti e' possibile avere una differente visione usando l'Option Menu e selezionando la modalita' Grid View
In questo modo si ha una comparazione piu' immediata delle differenze cromatiche
cliccando su un colore si ha il relativo codice e nome
Per tornare alla finestra precedente e' sufficiente cliccare sul menu Escape
mercoledì 22 febbraio 2012
Passare variabili globali
Passare il valore di una variabile tra differenti classi non e' esattamente una operazione banale in quanto ci si deve affidare ad una apposita classe. Nella classe devono essere contenute le variabili che si desiderano essere globali ed i metodi per settare e richiamare il valore della variabile
-------------------------------------------------------------------------
class MyApp extends Application {
int width;
int height;
public int getwidth(){
return width;
}
public void setwidth(int s){
width = s;
}
public int getheight(){
return height;
}
public void setheight(int s){
height = s;
}
private int myVar = 0;
private static MyApp instance;
static {
instance = new MyApp();
}
private MyApp() {
}
public static MyApp getInstance() {
return MyApp.instance;
}
}
-------------------------------------------------------------------------
per settare il valore delle variabili si procede cosi'
-------------------------------------------------------------------------
MyApp.getInstance().setheight(height);
MyApp.getInstance().setwidth(width);
-------------------------------------------------------------------------
mentre per richiamare il valore...
-------------------------------------------------------------------------
int w = (int) (MyApp.getInstance().getwidth()*0.9);
int h = (int) ((int) (MyApp.getInstance().getheight())*0.7);
-------------------------------------------------------------------------
-------------------------------------------------------------------------
class MyApp extends Application {
int width;
int height;
public int getwidth(){
return width;
}
public void setwidth(int s){
width = s;
}
public int getheight(){
return height;
}
public void setheight(int s){
height = s;
}
private int myVar = 0;
private static MyApp instance;
static {
instance = new MyApp();
}
private MyApp() {
}
public static MyApp getInstance() {
return MyApp.instance;
}
}
-------------------------------------------------------------------------
per settare il valore delle variabili si procede cosi'
-------------------------------------------------------------------------
MyApp.getInstance().setheight(height);
MyApp.getInstance().setwidth(width);
-------------------------------------------------------------------------
mentre per richiamare il valore...
-------------------------------------------------------------------------
int w = (int) (MyApp.getInstance().getwidth()*0.9);
int h = (int) ((int) (MyApp.getInstance().getheight())*0.7);
-------------------------------------------------------------------------
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
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...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
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...