gpt4 book ai didi

android - 使用Achartengine绘制显示ANR的加速度计数据

转载 作者:行者123 更新时间:2023-11-30 02:54:13 27 4
gpt4 key购买 nike

我正在使用 achartengine for android 绘制加速度计数据。但是一旦启动 Activity ,应用程序就会挂起并在一段时间后显示 ANR。请有人告诉我我哪里错了。这是我的代码。

    public class TestButtonActivity extends Activity implements
SensorEventListener{

private LinearLayout lyGforce;
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private TimeSeries timeSeriesGforcex;
private TimeSeries timeSeriesGforcey;
private TimeSeries timeSeriesGforcez;
private XYMultipleSeriesDataset datasetGforce;
private XYMultipleSeriesRenderer rendererGforce;
private XYSeriesRenderer rendererSeriesGforce;
private XYSeriesRenderer rendererSeriesGforcey;
private XYSeriesRenderer rendererSeriesGforcez;
private GraphicalView viewGforce;
Handler h;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_test_button);
Log.e("", "deepak");
h = new Handler();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer,
SensorManager.SENSOR_DELAY_UI);

datasetGforce = new XYMultipleSeriesDataset();
rendererGforce = new XYMultipleSeriesRenderer();
rendererGforce.setApplyBackgroundColor(true);
rendererGforce.setBackgroundColor(Color.argb(100, 50, 50, 50));
rendererGforce.setAxisTitleTextSize(16);
rendererGforce.setChartTitleTextSize(20);
rendererGforce.setLabelsTextSize(15);
rendererGforce.setLegendTextSize(15);
rendererGforce.setMargins(new int[] { 20, 30, 15, 20 });
// rendererGforce.setZoomButtonsVisible(true);

rendererGforce.setPointSize(10);
rendererGforce.setShowGrid(true);
rendererGforce.setGridColor(Color.WHITE);

rendererSeriesGforce = new XYSeriesRenderer();
rendererSeriesGforce.setColor(Color.GREEN);
rendererSeriesGforce.setLineWidth(2);

rendererSeriesGforcey = new XYSeriesRenderer();
rendererSeriesGforcey.setColor(Color.RED);
rendererSeriesGforcey.setLineWidth(2);

rendererSeriesGforcez = new XYSeriesRenderer();
rendererSeriesGforcez.setColor(Color.BLUE);
rendererSeriesGforcez.setLineWidth(2);

rendererGforce.addSeriesRenderer(rendererSeriesGforce);
rendererGforce.addSeriesRenderer(rendererSeriesGforcey);
rendererGforce.addSeriesRenderer(rendererSeriesGforcez);

timeSeriesGforcex = new TimeSeries("x");
timeSeriesGforcey = new TimeSeries("y");
timeSeriesGforcez = new TimeSeries("z");

datasetGforce.addSeries(timeSeriesGforcex);
datasetGforce.addSeries(timeSeriesGforcey);
datasetGforce.addSeries(timeSeriesGforcez);

viewGforce = ChartFactory.getTimeChartView(this, datasetGforce,
rendererGforce, "");
viewGforce.refreshDrawableState();
viewGforce.repaint();
lyGforce = (LinearLayout) findViewById(R.id.graph_view_container);
lyGforce.addView(viewGforce);
viewGforce.refreshDrawableState();
viewGforce.repaint();

}

@Override
protected void onResume() {
super.onResume();

}

@Override
protected void onPause() {
Log.d("onPause", "onPause");
mSensorManager.unregisterListener(this);
super.onPause();
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {


}

@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
Log.d("", "" + x + "" + y + "" + z);

timeSeriesGforcex.add(new Date(), x);
timeSeriesGforcey.add(new Date(), y);
timeSeriesGforcez.add(new Date(), z);

rendererGforce.setXAxisMax(rendererGforce.getXAxisMax() + 100);
rendererGforce.setXAxisMin(rendererGforce.getXAxisMin() + 30);
viewGforce.repaint();
}}

这就是 logcat 所说的:

05-10 11:47:16.765: I/dalvikvm(3046): threadid=3: reacting to signal 3
05-10 11:47:17.016: D/dalvikvm(3046): JIT unchain all for threadid=1
05-10 11:47:17.766: W/dalvikvm(3046): threadid=3: spin on suspend #1 threadid=1 (pcf=0)
05-10 11:47:18.517: W/dalvikvm(3046): threadid=3: spin on suspend #2 threadid=1 (pcf=0)
05-10 11:47:18.517: I/dalvikvm(3046): "Signal Catcher" daemon prio=5 tid=3 RUNNABLE
05-10 11:47:18.517: I/dalvikvm(3046): | group="system" sCount=0 dsCount=0 obj=0x418cd468 self=0x5adad250
05-10 11:47:18.517: I/dalvikvm(3046): | sysTid=3050 nice=0 sched=0/0 cgrp=apps handle=1524468640
05-10 11:47:18.517: I/dalvikvm(3046): | state=R schedstat=( 0 0 0 ) utm=0 stm=0 core=1
05-10 11:47:18.517: I/dalvikvm(3046): at dalvik.system.NativeStart.run(Native Method)
05-10 11:47:18.517: I/dalvikvm(3046): "main" prio=5 tid=1 RUNNABLE JIT
05-10 11:47:18.517: I/dalvikvm(3046): | group="main" sCount=1 dsCount=0 obj=0x41630728 self=0x4161a658
05-10 11:47:18.517: I/dalvikvm(3046): | sysTid=3046 nice=0 sched=0/0 cgrp=apps handle=1074864124
05-10 11:47:18.517: I/dalvikvm(3046): | state=R schedstat=( 0 0 0 ) utm=2175 stm=26 core=0
05-10 11:47:18.517: I/dalvikvm(3046): at org.achartengine.chart.TimeChart.getXLabels(TimeChart.java:~190)
05-10 11:47:18.517: I/dalvikvm(3046): at org.achartengine.chart.XYChart.draw(XYChart.java:314)
05-10 11:47:18.517: I/dalvikvm(3046): at org.achartengine.GraphicalView.onDraw(GraphicalView.java:166)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:14126)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13020)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:13839)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13015)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:13839)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13015)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:13839)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13015)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:13839)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.draw(View.java:14129)
05-10 11:47:18.517: I/dalvikvm(3046): at android.widget.FrameLayout.draw(FrameLayout.java:471)
05-10 11:47:18.517: I/dalvikvm(3046): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2231)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13020)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1411)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1359)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2377)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1882)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1009)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5508)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.Choreographer.doFrame(Choreographer.java:532)
05-10 11:47:18.517: I/dalvikvm(3046): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
05-10 11:47:18.517: I/dalvikvm(3046): at android.os.Handler.handleCallback(Handler.java:730)
05-10 11:47:18.517: I/dalvikvm(3046): at android.os.Handler.dispatchMessage(Handler.java:92)
05-10 11:47:18.517: I/dalvikvm(3046): at android.os.Looper.loop(Looper.java:213)
05-10 11:47:18.517: I/dalvikvm(3046): at android.app.ActivityThread.main(ActivityThread.java:5225)
05-10 11:47:18.517: I/dalvikvm(3046): at java.lang.reflect.Method.invokeNative(Native Method)
05-10 11:47:18.517: I/dalvikvm(3046): at java.lang.reflect.Method.invoke(Method.java:525)
05-10 11:47:18.517: I/dalvikvm(3046): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
05-10 11:47:18.517: I/dalvikvm(3046): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
05-10 11:47:18.517: I/dalvikvm(3046): at dalvik.system.NativeStart.main(Native Method)
05-10 11:47:19.268: W/dalvikvm(3046): threadid=3: spin on suspend #3 threadid=1 (pcf=0)
05-10 11:47:19.268: I/dalvikvm(3046): "Signal Catcher" daemon prio=5 tid=3 RUNNABLE
05-10 11:47:19.268: I/dalvikvm(3046): | group="system" sCount=0 dsCount=0 obj=0x418cd468 self=0x5adad250
05-10 11:47:19.268: I/dalvikvm(3046): | sysTid=3050 nice=0 sched=0/0 cgrp=apps handle=1524468640
05-10 11:47:19.268: I/dalvikvm(3046): | state=R schedstat=( 0 0 0 ) utm=0 stm=0 core=1
05-10 11:47:19.268: I/dalvikvm(3046): at dalvik.system.NativeStart.run(Native Method)
05-10 11:47:19.268: I/dalvikvm(3046): "main" prio=5 tid=1 RUNNABLE JIT
05-10 11:47:19.268: I/dalvikvm(3046): | group="main" sCount=1 dsCount=0 obj=0x41630728 self=0x4161a658
05-10 11:47:19.268: I/dalvikvm(3046): | sysTid=3046 nice=0 sched=0/0 cgrp=apps handle=1074864124
05-10 11:47:19.268: I/dalvikvm(3046): | state=R schedstat=( 0 0 0 ) utm=2246 stm=26 core=0
05-10 11:47:19.268: I/dalvikvm(3046): at org.achartengine.chart.TimeChart.getXLabels(TimeChart.java:~190)
05-10 11:47:19.268: I/dalvikvm(3046): at org.achartengine.chart.XYChart.draw(XYChart.java:314)
05-10 11:47:19.268: I/dalvikvm(3046): at org.achartengine.GraphicalView.onDraw(GraphicalView.java:166)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.View.draw(View.java:14126)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13020)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13062)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.View.draw(View.java:13839)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
05-10 11:47:19.268: I/dalvikvm(3046): at android.view.View.getDisplayList(View.java:13015)

最佳答案

终于自己找到了。

    rendererGforce.setShowGrid(true);

onCreate() 中的这条语句是罪魁祸首。将其从 onCreate() 中注释掉并添加到 onSensorChanged() 就在 viewGforce.repaint() 之前;它将完美运行。

确保在 onPause() 中将其设置回 false。

有一天可能会节省某人的时间。

关于android - 使用Achartengine绘制显示ANR的加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com