JPM*_*JPM 5 charts android graph opengl-es android-ndk
我想从蓝牙设备绘制实时数据.我有一个蓝牙设备,手机将连接到该设备并读取来自它的数据.数据是来自某些传感器的电压电平,并且采样率为每秒300个样本.我见过的大多数绘图库(如aiChart,Androidplot,achartengine,......)无法处理大量数据并重新绘制图形.所以我查看了openGL和Android NDK,似乎我可以使用其中一个和我的采样率来绘制图形.有没有人在android/Java和/或NDK代码示例中有openGL线图绘制的示例代码?
小智 3
我们简单地通过创建一个包含多个页面的点数组类并在 opengl 中使用偏移量进行绘图来完成类似的操作,以便当前点始终位于同一位置。
这个想法使用固定大小的数组和一个单独的计数器,这样你就不会遇到内存分配问题,这会导致GC启动。一旦页面已满,循环到下一页也显示旧页面。这个想法是,如果你有 5 个页面,你可以写入其中一个,显示其他 3 个页面,然后在单独的线程中将最后一个页面批量写入 SD 卡上的 SQLite,以便稍后可以提取所有数据。
只要你只有一个线程写入数组,你就可以摆脱类似的事情
arrayPoint[] p;
....
int currentPos = 0;
arrayPoint current = p[currentPos];
.....
while(....
if(current.end < current.max)
{
.... get datax and datay
current.end++;
current.x[current.end] = datax;
current.y[current.end] = datay;
}
else
{
currentPos = getNextPos();
current = p[currentPos];
current.end = -1; // truncate the array without actually freeing or allocating mem
..... flip volatile bool to let other thread know its ok to get exclusive access to its data etc
}
Run Code Online (Sandbox Code Playgroud)
它非常快,应该可以满足您的需要。然后您可以输出为画布上的点或在 opengl es 中绘制
希望有帮助。
| 归档时间: |
|
| 查看次数: |
5867 次 |
| 最近记录: |