2012-06-19 26 views
11

Xin chào, tôi đang cố gắng phát triển một ứng dụng thử nghiệm thực địa và tôi đã lấy thông tin như cường độ tín hiệu của các tế bào lân cận.Làm thế nào để vẽ một đồ thị trong Android như Wifi Analyzer App?

Vì vậy, câu hỏi của tôi là:

Làm thế nào tôi có thể hiển thị một đồ thị với các tế bào lân cận khác nhau trên trục X và cường độ tín hiệu trên trục Y trong thời gian thực? Ví dụ: here.

Tôi đã có 5 hoặc 6 ô lân cận và cho mỗi cường độ tín hiệu của mình.

+0

Vấn đề chính xác của bạn là gì? Nó có nhận được sức mạnh so với các tế bào lân cận hay là vấn đề của bạn hiển thị nó?Nếu bạn đã có dữ liệu, bạn có thể chỉ vẽ nó trên Canvas – Guardanis

+0

thks để nhận xét ur. Tôi muốn có được sức mạnh so với láng giềng và tất nhiên sẽ hiển thị nó sau đó. Tôi đã có dữ liệu để vấn đề là làm thế nào để vẽ nó trên vải như bạn nói !!! – 13KZ

+1

Nếu bạn chưa bao giờ sử dụng Canvas trước đây, đây là một nơi tốt để bắt đầu: http://www.tutorialforandroid.com/2009/06/drawing-with-canvas-in-android.html - Và nếu bạn đã có dữ liệu, chỉ cần lặp qua các điểm và vẽ chúng (vòng tròn, đường thẳng qua chúng, v.v.) – Guardanis

Trả lời

12

Thay vì vẽ đồ thị của bạn theo cách thủ công bằng Canvas, bạn có thể sử dụng Thư viện Công cụ Biểu đồ sẵn có và điều đó cũng sẽ dễ dàng hơn nhiều.

Giống như AchartEngine, ChartDroid, aFreeChart, MPAndroidChart

Đối Chart 3D Charts4J

Làm thế nào tôi có thể hiển thị một đồ thị với các tế bào lân cận khác nhau trên trục X và cường độ tín hiệu trên trục Y trong thời gian thực?

Tôi đã sử dụng aChart Engine cho giống nhau trong một ứng dụng của tôi. Có một bản demo API hoàn chỉnh có sẵn với thư viện vì vậy nó sẽ khá dễ hiểu cách sử dụng nó.

+2

Tôi muốn thêm [aFreeChart] (https://code.google.com/p/afreechart/), là một cổng của jFreeChart, vào danh sách. – Ivin

+0

Bạn là Wel-Come, Cảm ơn @Ivin – MKJParekh

+0

Cảm ơn rất nhiều @Ivin – 13KZ

1

Tôi không biết bạn muốn phát triển loại biểu đồ nào vì có nhiều loại khác nhau tại liên kết của bạn. Nhưng tôi đã phát triển một biểu đồ đường thời gian thực trong Android. Tôi đang sử dụng canvas để vẽ đường kẻ.

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

Bạn có thể dễ dàng định vị/chỉnh kích thước theo ý muốn của mình. Tôi đã không viết các tính toán của xIndex và xScale. Mảng điểm là mảng mà giá trị của bạn sẽ được viết.

Nhưng hãy cẩn thận, trong dòng Android được vẽ theo cặp, không có cấu trúc 'điểm' nào như tôi biết.

Ý tôi là [1, 0.25, 2, 0,45] vẽ một ranh giới giữa x1 = 1, y1 = 0,25 và x2 = 2, y2 = 0,45

Ngoài ra bạn có thể kích hoạt hòa bởi postInvalidate()

postInvalidate() onDraw (Canvas canvas)

1

Tôi đề nghị bạn sử dụng AChartEngine thay vì vẽ lên canvas. Bạn có thể tải xuống thư viện, javadocs và ứng dụng demo here.

Có hướng dẫn trên youtube khi bắt đầu với AChartEngine.

Bạn có thể sử dụng biểu đồ dạng đường với khu vực bên dưới biểu đồ có đầy màu hoặc không được lấp đầy để sao chép chức năng trong ảnh chụp màn hình đầu tiên bạn cung cấp.

Các vấn đề liên quan