0
안드로이드를 처음 접했습니다. Achartengine을 사용하여 이진 파일에서 값을 읽는 동적 그래프를 그려 봅니다. 아래 코드는 내 코드입니다. 정기적으로 값을 업데이트하는 동적 실행 그래프가 필요합니다. 이것을 위해 나는 타이머를 가지고 그리고 타이머없이 그것을하려고 노력한다. 하지만 때마다 마지막 값이 업데이트되었을 때 최종 값으로 그래프가 표시됩니다. 나는 모든 업데이트가 완료된 후에 정적 그래프를 얻는다는 것을 의미합니다. 이 문제를 해결하는 방법을 알 수 없습니다. 에뮬레이터를 사용하여 코드를 테스트하고 있습니다. 에뮬레이터에 문제가 있거나 코드에 문제가 있습니까? 타이머없이 미리 감사드립니다Achartengine을 사용한 안드로이드 다이내믹 플롯
코드 : 타이머
public class RandomActivity extends Activity {
private XYMultipleSeriesDataset eeg1 = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer renderer_eeg1 = new XYMultipleSeriesRenderer();
private XYSeries series1;
private GraphicalView view_eeg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
renderer_eeg1.setAxisTitleTextSize(16);
renderer_eeg1.setChartTitleTextSize(20);
renderer_eeg1.setLabelsTextSize(15);
renderer_eeg1.setLegendTextSize(15);
renderer_eeg1.setMargins(new int[] {20, 30, 15, 0});
renderer_eeg1.setAxesColor(Color.BLUE);
renderer_eeg1.setXTitle("Time");
renderer_eeg1.setChartTitle("eeg1");
XYSeriesRenderer seriesrenderer1 = new XYSeriesRenderer();
seriesrenderer1.setColor(Color.YELLOW);
renderer_eeg1.addSeriesRenderer(seriesrenderer1);
series1= new XYSeries("eeg1");
eeg1.addSeries(series1);
int a;
int b;
add();
for(int r=0;r<=600;r++){
if(r%2==0){
a=1;
b=-1;
}
else{
a=-1;
b=1;
}
series1.add(r, a);
if(r<=50){
renderer_eeg1.setXAxisMax(50);
}
else if(r>50){
double maxX = series1.getMaxX();
double minX = maxX - 50;
renderer_eeg1.setXAxisMin(minX);
}
view_eeg1.repaint();
}
}
protected void onResume() {
super.onResume();
if (view_eeg1== null) {
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view_eeg1= ChartFactory.getLineChartView(this, eeg1, renderer_eeg1);
layout_eeg1.addView(view_eeg1,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
view_eeg1.repaint();}
}
}
코드 :이 그려진되지 않도록 차트 실제로보기에 추가되기 전에
public class RandomActivity extends Activity {
private XYMultipleSeriesDataset eeg1 = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer renderer_eeg1 = new XYMultipleSeriesRenderer();
private XYSeries series1;
private GraphicalView view_eeg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
renderer_eeg1.setAxisTitleTextSize(16);
renderer_eeg1.setChartTitleTextSize(20);
renderer_eeg1.setLabelsTextSize(15);
renderer_eeg1.setLegendTextSize(15);
renderer_eeg1.setMargins(new int[] {20, 30, 15, 0});
renderer_eeg1.setAxesColor(Color.BLUE);
renderer_eeg1.setXTitle("Time");
renderer_eeg1.setChartTitle("eeg1");
XYSeriesRenderer seriesrenderer1 = new XYSeriesRenderer();
seriesrenderer1.setColor(Color.YELLOW);
renderer_eeg1.addSeriesRenderer(seriesrenderer1);
series1= new XYSeries("eeg1");
eeg1.addSeries(series1);
int a;
int b;
add();
for(int r=0;r<=600;r++){
Thread timer = new Thread(){
public void run(){
try{
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
if(r%2==0){
a=1;
b=-1;
}
else{
a=-1;
b=1;
}
series1.add(r, a);
if(r<=50){
renderer_eeg1.setXAxisMax(50);
}
else if(r>50){
double maxX = series1.getMaxX();
double minX = maxX - 50;
renderer_eeg1.setXAxisMin(minX);
}
view_eeg1.repaint();
}
}
protected void onResume() {
super.onResume();
if (view_eeg1== null) {
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view_eeg1= ChartFactory.getLineChartView(this, eeg1, renderer_eeg1);
layout_eeg1.addView(view_eeg1,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
view_eeg1.repaint();}
}
}
덕분에 많은 사람을 일했다) 응용 프로그램이 충돌합니다. 나는 300ms까지 갈 수 있는데, 그 아래는 그냥 추락한다. 어떤 해결책? 또 하나, 내가 이것을 시도 할 때 14 개의 그래프를 한 화면에 표시하면 (나는 너무 부피가 크다) 잠시 동안 간 다음 충돌이 일어난다. 왜 그런지 설명해 주시겠습니까? achartengine은 빠른 처리가 불가능합니까? – user1090992
내가 수면을 낮출 때 view_eeg1이 인스턴스화되기 전에 view_eeg1.repaint()가 실행 조건 인 것 같아요. 인스턴스 생성을 onCreate로 이동하거나 컨트롤을 추가하여 다시 그리기 전인지 확인해야합니다. –
안녕하세요,이 코드를 실행하기 전에 앱에 achart 엔진 API (Jar 파일)를 추가해야합니다. api 파일 [here] (http://code.google.com/p/achartengine/downloads/detail?name=achartengine-1.0.0.jar&can=2&q=)을 다운로드 할 수 있습니다. – harikrishnan