블루투스 장치에서 실시간 데이터를 플롯하려고합니다. 전화가 연결되어있는 블루투스 장치를 가지고 있고 거기에서 오는 데이터를 읽습니다. 데이터는 일부 센서의 전압 레벨이며 초당 300 샘플의 샘플 속도입니다. 대부분의 플로팅 라이브러리 (예 : aiChart, Androidplot, achartengine ...)는 데이터 양을 처리하고 그래프를 다시 칠할 수 없습니다. 그래서 저는 OpenGL과 Android NDK를 살펴 보았습니다. 그 중 하나를 가지고 샘플 속도로 그래프를 그릴 수있을 것 같습니다. 누구든지 안드로이드/자바 및/또는 NDK 코드 샘플에서 플로팅 라인 그래프 OpenGL을위한 샘플 코드가 있습니까?안드로이드에서 OpenGL을 이용한 동적 그래프 플로팅
5
A
답변
3
여러 페이지가있는 포인트 배열 클래스를 만들고 오프셋이있는 opengl을 그려서 단순히 현재 지점이 항상 같은 위치에 있도록하기 위해 이와 같이했습니다.
아이디어는 고정 된 크기의 배열을 별도의 카운터와 함께 사용하므로 gc가 발생할 메모리 할당 문제가 발생하지 않습니다. 페이지가 가득 차면 이전 페이지를 표시하는 다음 페이지로 순환하십시오. 아이디어는 5 페이지가 있으면 하나에 쓰고 다른 3은 표시하고 나머지는 sqlcard에 별도의 스레드로 작성하여 나중에 모든 데이터를 가져올 수 있다는 것입니다. 당신은 단지 배열에 하나 개의 스레드 기록을 가지고
는만큼 당신은
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
}
그것의 매우 빠른처럼 멀리 뭔가 얻을 수 있습니다 당신이 무엇을해야합니다. 그런 다음 캔버스의 한 점으로 출력하거나 OpenGL에서 그릴 수 있습니다.
희망이 있습니다.
관련 문제
- 1. OpenGL을 이용한 폴리곤 그라디언트
- 2. matlab - 그래프 플로팅
- 3. matlab - 그래프 플로팅
- 4. 자바 실시간 그래프 플로팅
- 5. MATLAB - 다중 그래프 플로팅
- 6. SVM 분류 그래프 플로팅 오류
- 7. Java 용 그래프 플로팅 라이브러리
- 8. Java 애플릿을 사용하여 그래프 플로팅
- 9. C++ 용 3D 그래프 플로팅
- 10. WCF를 이용한 동적 프로그래밍
- 11. jquery를 이용한 동적 트리 생성
- 12. PyQt를 이용한 파이썬 그래프 시각화 및 편집
- 13. DNA 계산을 이용한 그래프 해밀턴 경로
- 14. 파이썬 matplotlib에 3d 히스토그램/막대 그래프 플로팅
- 15. matlab에 3 차원 막대 그래프 플로팅
- 16. 플로팅 그래프 오류 (값까지 showign되지 않음)
- 17. OpenGL 용 플로팅 라이브러리
- 18. 동적 그래프 그리기 (직각)
- 19. GD가없는 동적 그래프 생성
- 20. 동적 그래프 생성기
- 21. OpenGL을
- 22. OpenGL을
- 23. OpenGL을
- 24. Jfreechart를 사용한 동적 그래프 표시
- 25. Groovy의 동적 객체 그래프 탐색
- 26. 안드로이드에서 동적 테이블을 만드는 방법
- 27. 안드로이드에서 OpenGL을 사용하여 바이트 배열에서 비트 맵을 만듭니다.
- 28. OpenGL을 사용하여 안드로이드에서 화면 주위의 특정 질감을 이동하는 방법은 무엇입니까?
- 29. matplotlib에서 x 축을 공유하는 두 개의 그래프 플로팅
- 30. C에서 확장 가능하고 동적 인 그래프 시각화 라이브러리
당신의 생각은 5 페이지의 데이터를 말하기 위해 작성하는 것이 좋습니다 ... 사실 마지막 페이지는 사이드 프로세스/쓰레드에 던져져 SD에 쓰일 수 있습니다. 귀하의 코드 방법은 내가 그렇게 가지 않을 것이지만 너무 느리게 보인다. 데이터가 가변적 인 크기와 비율을 가질 수 있고 배열을 푸는 것은 10 개의 새로운 데이터 포인트가 있고 재 인덱싱이 너무 느릴 때라고 말합니다. 따라서 이것이 우리가 이야기하고있는 Java 코드 인 경우 LinkedLists를 사용하는 이유는 무엇입니까? – JPM
OpenGL 코드에서 한 가지 질문을 Android/Java 또는 C/NDK로 작성 했습니까? – JPM
안녕 JPM 내가 정적 배열로 갔다하는 이유는 그게 내 주요 병 목이었다대로 GC를 피하기위한 것입니다. 나는 개인적인 경험을 통해 동적 클래스가 수천 개의 객체를 만들고 빠른 데이터 흐름을 유지할 수있는 기회를 없앨 것이라는 사실을 발견했습니다. 끝으로 인덱스가있는 정적 배열을 사용하면 끝을 -1로 설정하여 다시 설정하기위한 단 하나의 작업을 의미하며 데이터는 추가 된 것으로 덮어 씁니다. DDMS로 게임을하고 어디에서 개체를 만들 수 있는지 추적 할 수 있습니다. Android Java에서 모든 것을 작성했으며 GC를 제거한 후에는 충분히 빨랐습니다. – Kactus