2012-04-13 4 views
0

Android 휴대 전화 (GPS 위치, 가속도계, 방향)에서 센서 데이터를 가져와 UDP를 통해 서버로 데이터를 전송하는 앱을 작성하고 있습니다. (필자는이를 위해 Python을 사용할 계획입니다. 그건 그렇고).UDP 소켓을 통해 안드로이드 센서 데이터 보내기

지금까지는 센서 데이터를 얻고 표시하는 방법을 관리했지만 다양한 센서 데이터를 패킷에 결합하여 UDP를 통해 패킷을 전송하는 방법을 찾아 냈습니다. 내가 모르는 부분은 데이터를 서버에서 식별 할 수있는 방식으로 "병합"하는 방법입니다. 액셀러레이터에서 온 것인가, GPS 좌표인지 등등.

어떤 제안이 있습니까?

답변

0

서버 측에서 파이썬을 사용하는 경우 당신은 당신이 JSON 문자열 등으로 값 팩 수 { "센서"somedata, "GPS"somedata는 }

(그것의 아주 쉽게 때문에 역 직렬화하기 json.loads) 다음

그리고를 사용하여 사전에 JSON 객체는

JSON 문자열을 만들려면이 클래스를 사용할 수 있습니다 UDP 패킷에이 문자열을 넣어 http://developer.android.com/reference/org/json/package-summary.html

+0

안녕하세요, 감사합니다. 좋은 안드로이드 JSON 튜토리얼을 가르쳐 주시겠습니까? 나는 그것을 직접 봤지만 초보자를위한 좋은 단계별 가이드를 찾을 수없는 것 같습니다. 다시 한 번 감사드립니다! – herrfz

+0

매우 간단합니다. 예를 들어 http://www.vogella.com/articles/AndroidJSON/article.html#write – marwinXXII

+0

멋지고 감사합니다. – herrfz

1

JSON이 좋거나 Jython을 사용하여 Java의 직렬화 라이브러리를 활용할 수 있습니다. 이것의 장점은 클래스를 직렬화 가능한 형식으로 변환 할 필요가 없다는 것입니다. 말 그대로 직렬화 가능을 구현하고 serialVersionUID를 추가하면됩니다. Jython tips에서 복사

:

9 직렬화

자바 객체는 표준 파이썬 피클과의 cPickle 모듈을 사용하여 직렬화 할 수 없습니다. Java 및 Jython 객체는 모두 일반적인 Java 직렬화를 사용하여 직렬화 할 수 있습니다. 당신이 정상 java.io.ObjectInputStream의 클래스를 사용할 수없는 자이 썬 개체를 직렬화 복원 할 때 다음과 같이 그러나, 당신은, 자이 썬 고유의 org.python.util.PythonObjectInputStream을 사용해야합니다

import java.io as io 
import org.python.util as util 

class TestClass(io.Serializable): 
    def __init_ _(self, value=0): 
     self.value = value 
     self.message = "Serialized" 

    def toString(self): 
     return "Message: %(message)s value: 
      is %(value)s" % self.__dict_ _ 

instance = TestClass(3) 

outFile = io.FileOutputStream("test.ser") 
outStream = io.ObjectOutputStream(outFile) 
outStream.writeObject(instance) 
outFile.close() 

inFile = io.FileInputStream("test.ser") 
inStream = util.PythonObjectInputStream(inFile) 

readInstance = inStream.readObject() 
print readInstance.toString() 
Message: Serialized value: is 3 

사용하지 않는 경우 PythonObjectInputStream을 사용하면 일반 Java ObjectInputStream에서 Jython의 Java 상속에 사용되는 동적으로로드 된 프록시 클래스를 찾고 다시 만드는 것이 어렵 기 때문에 런타임 오류가 발생합니다.

관련 문제