早上好,我遇到了一个我不明白的问题,让我解释一下:
我正在开发一个基于微控制器 Arduino 和 Android 应用程序的项目。arduino 从 pop3 命令中恢复邮件并将它们发送到 Android 应用程序。两人只通过短信交流。
问题是:我通过 SMS Broadcaster 在 Android 上获取消息,然后恢复一个字符串(String)。
以下是邮件恢复对象的示例:
Re: [阶段] 技术=?iso-8859-1?Q?vari?= =?iso-8859-1?B?6WVz?=de 通讯
这给出了以下结果:
回复:[Stage] 各种技术交流
可能需要注意的是,在 ISO 中只有一些文本以两种不同的方式编码。
我的问题是:我如何解析文本?问题是使用短信传输我没有选择返回类型。这是我用来阅读短信的代码:
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
SmsMessage[] message = new SmsMessage[pdus.length];
String messageBody = null;
String phoneNumber = null;
for (int i=0; i< message.length;i++) {
message[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
messageBody = message[0].getMessageBody();
phoneNumber = message[0].getDisplayOriginatingAddress();
if (message.length > -1) {
if (phoneNumber.equals(arduino)) {
Toast.makeText(context, "New Data",Toast.LENGTH_SHORT ).show();
//this.abortBroadcast();
Log.d("BroadcastSMS", "***************phoneNumber:"+phoneNumber+" messageBody:"+messageBody);
//TODO : ici, que faire du message "messageBody" pour l'interpréter.
}
}
}
我发现自己已经将消息作为字符串。我的直觉是尝试将自己编码为“shell”,但我不明白在此示例中如何编码“ed”。澄清我的问题是:
标签 ISO 中的“Q”和“B”有什么区别?
在我的例子中,第二个标签应该是 ISO 代码“ed”(注意空格,如果单词是粘的)。但是我不是在一个十六进制代码[0-F] [0-F]之间对应的情况下,文字是:6WVz
但是我可能走错路了,如果您对这些问题有答案或其他方法可以帮助我吗?
无论如何提前谢谢你。
杰米