2014-02-28 3 views
1

Google Glass에서 실행중인 앱에서 UDP 데이터를 수신하기위한 권장 사항은 무엇인가요?GDK를 사용하여 Google Glass에서 UDP 데이터를 수신

기존 시스템과 통합해야합니다. 이 시스템은 UDP를 로컬 서브넷으로 브로드 캐스팅합니다. Glass는 동일한 서브넷에 있고 Glass에서 실행중인 앱은 포트에서 UDP 패킷을 청취 한 다음 사용자에게 포함 된 정보를 표시해야합니다.

저는 현재 자유롭게 변경할 수있는 기존 시스템과 통합하고 있으므로 UDP를 받기만을 원할 것입니다 (다른, 아마도 더 높은 수준의 프레임 워크를 사용하는 것과 반대).

문서를 둘러 보면서 네트워크와 관련된 주제가 상호 운용을 위해 더 높은 수준의 항목을 가리키는 것을 보았습니다.하지만 실제로 소켓을 수신하는 저레벨 UDP를 찾고 Glass에서이 작업을 수행하는 데 어떤 것이 좋을지 궁금합니다.

제안 사항? GDK welcome page에 따르면

+1

어쩌면 작동할까요? http://stackoverflow.com/questions/3102048/how-to-receive-data-using-udp-in-android –

+0

@PhilippeSignoret 감사합니다! 좋은 본보기처럼 보입니다. – Nerdtron

답변

2

는 :

우리는 기존의 안드로이드 SDK 그냥 유리에 작동하도록하기 위해 유리 플랫폼을 설계했습니다. 이를 통해 친숙한 환경에서 코드를 작성할 수 있지만 고유 한 새로운 장치를 만들 수 있습니다.

또한 기존 Android 개발 도구를 모두 사용할 수 있으며 Glassware는 표준 Android 패키지 (APK)로 제공됩니다.

그래서, 아마도 당신은 (안된)의 라인을 따라 뭔가를 할 수 있어야한다 :

byte[] buf = new byte[1024]; 
DatagramSocket socket = new DatagramSocket(port); 
DatagramPacket packet = new DatagramPacket(buf, buf.length); 
socket.receive(packet); 

DatagramSocket reference

+0

아 맞아. 글쎄, 나는 이것을 답으로 표시하고 어떻게 작동하는지 보게 될 것이다 :) – Nerdtron

+1

작동하지 않거나 더 좋은 대답을 찾으면 되돌아와 표시/업데이트하는 것을 잊지 마라. –

+0

Glass 예제와 문서를 살펴보면 UDP 수신 활동을 시작/중지 할 수 있어야한다고 생각합니다. 귀하의 예제에서와 같이 socket.receive() 호출을 사용하고 있다면 요청에 따라 중단하고 중단 할 수 있습니까? – Nerdtron

1

Nerdtron, 당신은 유리 UDP 코드 작업을 했습니까?

저는 매우 비슷한 상황에 있으며 UDP 코드가 GDK 유리 제품으로 작동하도록하려고합니다.

성공적으로 수행 한 경우 어떻게 작성했는지와 코드를 공유 할 수 있습니까? 내가 지금까지 발견 한 내용을

그렇지 않은 경우는 다음과 같습니다

  1. 네트워킹 부분은 별도의 스레드에서 실행해야합니다 (안 메인 스레드에서). DatagramSocket/Packet에 대해서만 알면 전혀 도움이되지 않습니다.

  2. 앱이 지속적으로 실행되어 데이터/패킷을 수신해야하는 경우 AsyncTask가 도움이되지 않습니다. 따라서 사용을 중지하십시오. 나는 많은 시간을 낭비했다. 데이터를 지속적으로 수신하기 위해 별도의 스레드를 만들어야합니다. AsyncTask는 단기 또는 임시 작업을위한 것입니다.

  3. GUI 부품이 메인 스레드 가 아닌 다른 스레드에서 조작하지 않아야 (주 스레드는 'GUI'스레드). GUI 부분 (텍스트 포함)을 조작하려고 시도하는 코드는 오류를 생성합니다. 따라서 GUI를 변경하려면 네트워크/인터넷을 통해 데이터를 수신하는 스레드가 '처리기'를 사용해야합니다. (콜백).

그래서 지속적으로 네트워크/인터넷에서 데이터를 수신 및 안드로이드/유리 애플 리케이션의 GUI 를 업데이트하는 것은 전혀 쉬운 일이 아니다. 네트워크 및 GUI와 관련하여 Android/Glass 앱에서 작동하는 방식을 명확하게 이해하고 있어야합니다 ( ).

내 코드가 지금까지 내 Glass 화면에서 UDP 패킷을 수신하고 텍스트를 업데이트하도록했습니다. 코드를 정리하고 다소 올바르게 작동하는지 확인한 후에 코드, 결과, 참조 등을 공유하려고합니다.

궁금한 점이 있으면 알려주세요.

+0

아직 없습니다. 나는 곧 거기에 있어야한다. 나의 초기 계획은 다음과 같다. 기본 GUI 스레드를 유지하지 않도록 백그라운드에서 UDP 패킷을 수신 할 작업자 스레드를 만듭니다. 언제든지 패킷을 받고 디코드하고 공용 스레드 상태를 작업자 스레드에서 업데이트하고 GUI 스레드에 알림을 보냅니다. 메인 GUI 쓰레드는 단순히 알림을 기다렸을 때 상태가 업데이트 될 때까지 기다린다. 그래서 백그라운드 스레드는 단지 UDP를하고 GUI 스레드는 GUI를 수행하고 공유 상태 (또는 대기열 또는 다른 것)를 통해 통신합니다. 나는 이것이 효과가 있기를 바라고있다! – Nerdtron

+0

Glass에서 코드를 실행했습니다. 위의 답변에 대한 답을보십시오. 데이터 그램 소켓에서 무한 루프 읽기 작업 스레드를 만드는 중입니다. 응용 프로그램을 종료해야하는 경우 예외를 throw하는 소켓을 닫고 루프에서 작업자 스레드를 빼냅니다. 아주 잘 작동하고있는 것 같습니다. – Nerdtron

+1

죄송합니다. 나는 그것을위한 코드를 게시하는 것을 잊었다. 이미 코드를 성공적으로 만들었습니까? 위에서 언급 한 정보와 링크는 glass/android에 대한 udp 네트워크 코딩의 최소 요구 사항입니다. 더 많은 도움이 필요하다면 간단한 코드를 게시하려고 노력할 것입니다. 감사. – user3261595