2012-06-19 12 views
11

Ciao Sto cercando di sviluppare un'applicazione di test sul campo e devo recuperare informazioni come la potenza del segnale delle celle vicine.Come disegnare un grafico in Android come l'app Wifi Analyzer?

Quindi la mia domanda è:

Come posso visualizzare un grafico con le diverse cellule limitrofi asse X e la potenza del segnale su Y in tempo reale? Un esempio here.

Ho già 5 o 6 celle vicine e per ognuna il suo segnale.

+0

Qual è esattamente il tuo problema? Sta ottenendo la forza rispetto alle celle vicine o il tuo problema lo sta visualizzando?Se possiedi già i dati, puoi probabilmente tracciarli su una tela – Guardanis

+0

per il tuo commento. Voglio ottenere la forza contro il vicino e ovviamente visualizzarla dopo. Ho già i dati quindi il problema è come tracciarlo su tela come hai detto !!! – 13KZ

+1

Se non hai mai usato il Canvas prima, questo è un buon punto di partenza: http://www.tutorialforandroid.com/2009/06/drawing-with-canvas-in-android.html - E se già lo fai avere i dati, basta scorrere i punti e disegnarli (cerchi, linee, ecc.) – Guardanis

risposta

12

Piuttosto che si traccia manualmente il grafico usando Canvas, è possibile utilizzare le librerie del motore di grafico disponibili e sarà anche molto più semplice.

Come AchartEngine, ChartDroid, aFreeChart, MPAndroidChart

Per Grafico 3D Charts4J

Come posso visualizzare un grafico con le diverse cellule vicine in asse X e la potenza del segnale su Y in tempo reale?

Ho usato un Motore grafico per lo stesso in una delle mie applicazioni. È disponibile una demo completa dell'API con la libreria, quindi sarà facile capire come utilizzarla.

+2

Vorrei aggiungere [aFreeChart] (https://code.google.com/p/afreechart/), che è una porta di jFreeChart, alla lista. – Ivin

+0

Sei Wel-Come, grazie @Ivin – MKJParekh

+0

Grazie mille @Ivin – 13KZ

1

Non so quale tipo di grafico si desidera sviluppare perché ci sono diversi tipi al tuo collegamento. Ma ho sviluppato un grafico a linee in tempo reale in Android. Sto usando la tela per disegnare linee.

public class GraphView extends View 
{ 
    ... 
    private final Rect rect = new Rect(); 
    private final Paint linePaint = new Paint(); 
    private final Paint backgroundPaint = new Paint(); 
    private float[] points; 

    public GraphView(final Context context, final AttributeSet aSet) 
    { 
     super(context, aSet); 
    } 
    @Override 
    protected void onDraw(final Canvas canvas) 
    { 
     if (points == null) 
     { 
      return; 
     } 
     canvas.drawLines(points, linePaint); 
     rect.set((int) (xIndex * xScale), 0, (int) (xIndex * xScale + 5), getHeight()); 
     canvas.drawRect(rect, backgroundPaint); 
    } 
... 
} 

Puoi facilmente posizionare/ridimensionare il tuo rect in base alle tue esigenze. Non ho scritto i calcoli di xIndex e xScale. L'array di punti è quello in cui verranno scritti i tuoi valori.

Ma attenzione, nelle linee Android sono disegnate con coppie, non esiste una struttura "punto" come so.

Voglio dire [1, 0,25, 2, 0,45] traccia una linea tra x1 = 1, y1 = 0,25 e x2 = 2, Y2 = 0,45

Inoltre è possibile attivare draw da postInvalidate()

postInvalidate() onDraw (Canvas canvas)

1

Suggerisco di utilizzare AChartEngine piuttosto che disegnare su tela. È possibile scaricare la libreria, javadocs e un'applicazione demo here.

Ci sono tutorial su youtube su come iniziare con AChartEngine.

È possibile utilizzare i grafici a linee con l'area sotto la tabella riempita con un colore o non riempita per copiare la funzionalità nei primi screenshot forniti.

Problemi correlati