2012-06-19 7 views
11

Hallo Ich versuche, eine Feldtest-Anwendung zu entwickeln, und ich muss Informationen wie Signalstärke von benachbarten Zellen abrufen.Wie zeichne ein Diagramm in Android wie Wifi Analyzer App?

Also meine Frage ist:

Wie kann ich ein Diagramm mit den verschiedenen benachbarten Zellen auf X-Achse und die Signalstärke auf dem Y-Achse in Echtzeit angezeigt werden? Ein Beispiel here.

Ich habe schon 5 oder 6 Nachbarzellen und für jeden seine Signalstärke.

+0

Was genau ist Ihr Problem? Bekommt es die Stärke gegenüber benachbarten Zellen oder ist es dein Problem, es anzuzeigen?Wenn Sie bereits die Daten haben, können Sie es wahrscheinlich auf einem Canvas – Guardanis

+0

thks für Ihren Kommentar plotten. Ich möchte die Stärke gegen Nachbar bekommen und natürlich danach zeigen. Ich habe bereits die Daten, also ist das Problem, wie man es auf Leinwand plottet, wie du sagst !!! – 13KZ

+1

Wenn Sie noch nie zuvor den Canvas verwendet haben, ist dies ein guter Anfang: http://www.tutorialforandroid.com/2009/06/drawing-with-canvas-in-android.html - Und wenn Sie schon Habe die Daten, gehe einfach durch die Punkte und zeichne sie (Kreise, Linien, etc.) – Guardanis

Antwort

12

Zeichnen Sie das Diagramm lieber manuell, indem Sie Canvas verwenden. Sie können die verfügbaren Chart-Engine-Bibliotheken verwenden, und das wird auch viel einfacher.

Wie AchartEngine, ChartDroid, aFreeChart, MPAndroidChart

Für 3D-Karten Charts4J

Wie kann ich ein Diagramm mit den verschiedenen benachbarten Zellen auf X-Achse und die Signalstärke auf dem Y-Achse angezeigt werden in Echtzeit?

Ich habe eine Chart-Engine für die gleiche in einer meiner Anwendung verwendet. Es gibt eine vollständige API-Demo mit der Bibliothek, so dass es ziemlich einfach zu verstehen ist, wie man sie benutzt.

+2

Ich möchte [aFreeChart] (https://code.google.com/p/afreechart/) hinzufügen, was ist ein Port von jFreeChart, zu der Liste. – Ivin

+0

Sie sind Welcome, Danke @Ivin – MKJParekh

+0

Vielen Dank @Ivin – 13KZ

1

Ich weiß nicht, welche Art von Graphen Sie entwickeln möchten, da es verschiedene Typen an Ihrem Link gibt. Aber ich habe ein Echtzeit-Liniendiagramm in Android entwickelt. Ich benutze Leinwand zum Zeichnen von Linien.

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); 
    } 
... 
} 

Sie können Ihr Rect einfach nach Ihren Bedürfnissen positionieren/dimensionieren. Ich habe die Berechnungen von xIndex und xScale nicht geschrieben. Das Punktearray ist dasjenige, in das deine Werte geschrieben werden.

Aber Vorsicht, in Android-Linien sind mit Paaren gezeichnet, es gibt keine "Punkt" -Struktur, wie ich weiß.

I mean [1, 0,25, 2, 0,45] zeichnet eine Linie zwischen x1 = 1, y1 = 0,25 und x2 = 2, y2 = 0,45

Sie können auch draw durch postInvalidate trigger()

postInvalidate() onDraw (Canvas canvas)

1

ich schlage vor, Sie AChartEngine verwenden, anstatt auf die Leinwand ziehen. Sie können die Bibliothek, Javadocs und eine Demo-Anwendung here herunterladen.

Es gibt Tutorials auf Youtube zum Einstieg in AChartEngine.

Sie können Liniendiagramme mit dem Bereich unterhalb des Diagramms verwenden, die mit einer Farbe gefüllt oder nicht ausgefüllt sind, um die Funktionalität in den ersten von Ihnen bereitgestellten Screenshots zu kopieren.

Verwandte Themen