Trazado gráfico dinámico con openGL en Android

Quiero trazar datos en tiempo real desde un dispositivo bluetooth. Tengo un dispositivo Bluetooth al que el teléfono se conectará y leerá los datos procedentes de él. Los datos son niveles de voltaje de algunos sensores y tienen una velocidad de muestreo de 300 muestras por segundo. La mayoría de las librerías de trazado (como aiChart, Androidplot, achartengine, …) que he visto no pueden manejar esa cantidad de datos y repintar el gráfico. Así que miré en openGL y Android NDK y parece que podría ser capaz de gráfico utilizando cualquiera de estos con las tasas de muestreo que tengo. ¿Alguien tiene un código de ejemplo para el gráfico de línea openGL trazado en android / Java y / o muestra de código NDK?

Hicimos algo como esto simplemente creando una clase de matriz de puntos con varias páginas y dibujando en opengl con desplazamiento para que el punto actual esté siempre en el mismo lugar.

La idea de utilizar arreglos de tamaño fijo con un contador por separado, por lo que no están golpeando los problemas de asignación de memoria que causaría gc para poner en marcha Una vez que una página está llena, el ciclo a la siguiente página que muestra la antigua también. La idea es que si tienes 5 páginas, puedes escribir en una, mostrar las otras 3 y escribir por lotes la última en sqlite en una tarjeta SD en un hilo separado para poder extraer todos los datos más adelante.

Siempre y cuando sólo tiene un hilo escrito a la matriz puede salir con algo así como

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 } 

Su muy rápido y debe hacer lo que necesita. A continuación, puede imprimir como un punto en un lienzo o dibujar en opengl es

Espero que ayude.

  • Cómo crear la pantalla de carga en libgdx?
  • Android: actualiza el mapa de bits del hilo del temporizador
  • ¿Cuál es la diferencia entre 'Wall Time' y 'Thread Time' en 'Tracer para OpenGL ES' en DDMS
  • Muestra una fuente de video de gstreamer en Google Cartón SurfaceTexture
  • OpenGL se bloquea al vincular el programa, LG Nexus 4
  • Cómo agregar una imagen panorámica en la aplicación google cartón?
  • Desarrollo de juegos Android 3D
  • ¿El emulador de Android admite OpenGL ES 3.0?
  • ¿Hay una solución de reproducción de video más rápida que las funciones de AndroidBitmap_xxx?
  • Android opengl dibujar el modelo 3d de archivo .obj
  • OpenGL ES 2.0 IllegalArgumentException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.