Al momento attuale esistono diversi plugin per Android o meglio diversi pacchetti
Scaricando il Google Plugin si ha oltre al necessario per sviluppare Android in Eclipse anche la possibilita' di scaricare l'SDK di Android e GWT ed AppEngine
Invece a questo link si trova il solo pacchetto ADT in cui e' presente il solo plugin Android per Eclipse. L'SDK dovra' essere scaricato a parte
venerdì 2 novembre 2012
martedì 30 ottobre 2012
Disegnare grafici in Android con GrahView
Un'altra libreria (oltre alla gia' citata AndroidPlot) per disegnare grafici su Android e' GraphView
Rispetto alla precedente e' meno commentata ed di utilizzo un po' piu' difficile ma permette di mostrare dati in realtime ed ha lo zoom ed il pan dinamico mediante gesture
Un po' di indicazioni: il tutorial sul sito dello sviluppatore funziona solo con la versione 2.0 (al momento della scrittura di questo post la versione piu' recente e' la 3.0); per questo motivo anche io ho usato la versione 2
Inoltre di default i colori delle label sugli assi delle ascisse e delle ordinate ed il titolo sono bianchi per cui iniziando un progetto da zero con il nuovo SDK si deve cambiare il colore di background della activity (che gia' di suo e' bianco) altrimenti scompare tutto
-------------------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/graph1" />
</RelativeLayout>
-------------------------------------------
Usando il codice sotto riportato (un misto tra il codice di esempio ed alcune righe che ho inserito io) si ha come risultato questa immagine
-------------------------------------------
package com.test.graph;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.widget.LinearLayout;
import com.jjoe64.graphview.GraphView.GraphViewData;
import com.jjoe64.graphview.GraphView.GraphViewSeries;
import com.jjoe64.graphview.GraphView.LegendAlign;
import com.jjoe64.graphview.LineGraphView;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int num = 150;
GraphViewData[] data = new GraphViewData[num];
double v=0;
for (int i=0; i<num; i++) {
v += 0.2;
data[i] = new GraphViewData(i, Math.sin(v));
}
GraphViewSeries seriesSin = new GraphViewSeries("Seno", Color.rgb(200, 50, 00), data);
//attenzione l'array dei dati deve essere completo
//se si omette per esempio di dichiarare dati[4] il programma genera una eccezione
GraphViewData[] dati = new GraphViewData[5];
dati[0] = new GraphViewData(0,0);
dati[1] = new GraphViewData(10,0.5);
dati[2] = new GraphViewData(15,1.5);
dati[3] = new GraphViewData(17,0.7);
dati[4] = new GraphViewData(22,0.7);
GraphViewSeries seriedati = new GraphViewSeries("Misure", Color.rgb(0, 250, 00), dati);
LineGraphView graphView = new LineGraphView(
this
, "Titolo Grafico"
);
// aggiungi la serie dati
graphView.addSeries(seriesSin);
graphView.addSeries(seriedati);
// finestra di visualizzazione del grafico
graphView.setViewPort(0, 20);
graphView.setScrollable(true);
graphView.setScalable(true);
// Legenda
graphView.setShowLegend(true);
graphView.setLegendAlign(LegendAlign.BOTTOM);
graphView.setLegendWidth(70);
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(graphView);
}
Rispetto alla precedente e' meno commentata ed di utilizzo un po' piu' difficile ma permette di mostrare dati in realtime ed ha lo zoom ed il pan dinamico mediante gesture
Un po' di indicazioni: il tutorial sul sito dello sviluppatore funziona solo con la versione 2.0 (al momento della scrittura di questo post la versione piu' recente e' la 3.0); per questo motivo anche io ho usato la versione 2
Inoltre di default i colori delle label sugli assi delle ascisse e delle ordinate ed il titolo sono bianchi per cui iniziando un progetto da zero con il nuovo SDK si deve cambiare il colore di background della activity (che gia' di suo e' bianco) altrimenti scompare tutto
-------------------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/graph1" />
</RelativeLayout>
-------------------------------------------
Usando il codice sotto riportato (un misto tra il codice di esempio ed alcune righe che ho inserito io) si ha come risultato questa immagine
-------------------------------------------
package com.test.graph;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.widget.LinearLayout;
import com.jjoe64.graphview.GraphView.GraphViewData;
import com.jjoe64.graphview.GraphView.GraphViewSeries;
import com.jjoe64.graphview.GraphView.LegendAlign;
import com.jjoe64.graphview.LineGraphView;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int num = 150;
GraphViewData[] data = new GraphViewData[num];
double v=0;
for (int i=0; i<num; i++) {
v += 0.2;
data[i] = new GraphViewData(i, Math.sin(v));
}
GraphViewSeries seriesSin = new GraphViewSeries("Seno", Color.rgb(200, 50, 00), data);
//attenzione l'array dei dati deve essere completo
//se si omette per esempio di dichiarare dati[4] il programma genera una eccezione
GraphViewData[] dati = new GraphViewData[5];
dati[0] = new GraphViewData(0,0);
dati[1] = new GraphViewData(10,0.5);
dati[2] = new GraphViewData(15,1.5);
dati[3] = new GraphViewData(17,0.7);
dati[4] = new GraphViewData(22,0.7);
GraphViewSeries seriedati = new GraphViewSeries("Misure", Color.rgb(0, 250, 00), dati);
LineGraphView graphView = new LineGraphView(
this
, "Titolo Grafico"
);
// aggiungi la serie dati
graphView.addSeries(seriesSin);
graphView.addSeries(seriedati);
// finestra di visualizzazione del grafico
graphView.setViewPort(0, 20);
graphView.setScrollable(true);
graphView.setScalable(true);
// Legenda
graphView.setShowLegend(true);
graphView.setLegendAlign(LegendAlign.BOTTOM);
graphView.setLegendWidth(70);
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(graphView);
}
lunedì 29 ottobre 2012
venerdì 26 ottobre 2012
Errore su Toast in Android
Un esempio di come puo' avere dei trabocchetti la programmazione su Android anche su cose semplici come la creazione di un widget Toast
Nel referenziare il context del comando Toast.maketext e' necessario riportare il nome della activity in cui si sviluppa il comando (in questo caso MainActivity) altrimenti si genera un errore
------------------------------------------------------
btngraph.setOnClickListener(new View.OnClickListener() {
private Toast toast;
public void onClick(View v) {
// Questo genera un errore
toast = Toast.makeText(this, R.string.errore, Toast.LENGTH_LONG);
// Questo NON genera un errore toast = Toast.makeText(MainActivity.this, R.string.errore, Toast.LENGTH_LONG);
toast.show();
}
Nel referenziare il context del comando Toast.maketext e' necessario riportare il nome della activity in cui si sviluppa il comando (in questo caso MainActivity) altrimenti si genera un errore
------------------------------------------------------
btngraph.setOnClickListener(new View.OnClickListener() {
private Toast toast;
public void onClick(View v) {
// Questo genera un errore
toast = Toast.makeText(this, R.string.errore, Toast.LENGTH_LONG);
// Questo NON genera un errore toast = Toast.makeText(MainActivity.this, R.string.errore, Toast.LENGTH_LONG);
toast.show();
}
Leggere DMG su Linux
Puo' accadere, specialmente adesso che Apple la sta facendo da padrona, di dover spacchettare un file .dmg ....come fare senza un Mac a disposizione ??
per prima cosa si scarica dmg2iso
apt-get install dmg2iso
in seguito si converte in formato img
dmg2iso pacchetto.dmg
quindi si monta il modulo per il file system hfsplus e si monta il file immagine
modprobe hfsplus
mount -t hfsplus -o loop pacchetto.img /media/sdc
per prima cosa si scarica dmg2iso
apt-get install dmg2iso
in seguito si converte in formato img
dmg2iso pacchetto.dmg
quindi si monta il modulo per il file system hfsplus e si monta il file immagine
modprobe hfsplus
mount -t hfsplus -o loop pacchetto.img /media/sdc
lunedì 22 ottobre 2012
Scambiare dati tra due Activity in Android
Per passare i dati tra due Acitivity, senza la necessita' di dichiarare variabili globali, si puo' usare un Bundle e inserirci i valori (specificando il formato di ogni variabile)
Di seguito un esempio
Attivita' 1 : spedisce i dati
----------------------------------------------------------------------------------
Bundle dataBundle = new Bundle();
dataBundle.putInt("gradini", gradino);
dataBundle.putDouble("portata1", Double.parseDouble(portata1.getText().toString()));
dataBundle.putDouble("soggiacenza1", Double.parseDouble(soggiacenza1.getText().toString()));
dataBundle.putDouble("portata2", Double.parseDouble(portata2.getText().toString()));
dataBundle.putDouble("soggiacenza2", Double.parseDouble(soggiacenza2.getText().toString()));
dataBundle.putDouble("portata3", Double.parseDouble(portata3.getText().toString()));
dataBundle.putDouble("soggiacenza3", Double.parseDouble(soggiacenza3.getText().toString()));
dataBundle.putDouble("portata4", Double.parseDouble(portata4.getText().toString()));
dataBundle.putDouble("soggiacenza4", Double.parseDouble(soggiacenza4.getText().toString()));
dataBundle.putDouble("portata5", Double.parseDouble(portata5.getText().toString()));
dataBundle.putDouble("soggiacenza5", Double.parseDouble(soggiacenza5.getText().toString()));
Intent Intentdati = new Intent();
Intentdati.setClass(MainActivity.this,Grafico.class);
Intentdati.putExtras(dataBundle);
startActivity(Intentdati);
----------------------------------------------------------------------------------
Attivita' 2 : riceve i dati
----------------------------------------------------------------------------------
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grafico);
Bundle da = getIntent().getExtras();
gradini = da.getInt("gradini");
portata1 = da.getDouble("portata1");
soggiacenza1 = da.getDouble("soggiacenza1");
portata2 = da.getDouble("portata2");
soggiacenza2 = da.getDouble("soggiacenza2");
portata3 = da.getDouble("portata3");
soggiacenza3 = da.getDouble("soggiacenza3");
portata4 = da.getDouble("portata4");
soggiacenza4 = da.getDouble("soggiacenza4");
portata5 = da.getDouble("portata5");
soggiacenza5 = da.getDouble("soggiacenza5");
----------------------------------------------------------------------------------
venerdì 19 ottobre 2012
Pulire la cache dei file Deb in Debian
Nel caso in cui sia necessario libera spazio da una Debian si puo' rimuovere la cache dei pacchetti .deb che sono contenuti nelle seguenti directory
/var/cache/apt/archives
/var/cache/apt/archives/partial
la loro cancellazione non crea problemi al normale funzionamento
altrimenti si puo' usare il piu' pulito
apt-get clean
/var/cache/apt/archives
/var/cache/apt/archives/partial
la loro cancellazione non crea problemi al normale funzionamento
altrimenti si puo' usare il piu' pulito
apt-get clean
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...


