これは、メッセージを受信するアクティビティの完全なコードです。受信したメッセージから経度と緯度を抽出する他の方法はありますか?
package com.winzoque.android.tracker;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//--- 渡された SMS メッセージを取得する ---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
String lat = "";
String lon = "";
if (bundle != null)
{
//--- 受信したメッセージを取得する ---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += msgs[i].getMessageBody().toString();
str += "\n";
//--- ここでは部分文字列コードを使用しましたが、経度と緯度の配列は場所が変わると変化し続けるため、経度と緯度を取得するのには役に立ちません。
これは私が助けが必要な部分です。または、私が使用できる提案があれば. 「分割」を使用することを考えましたが、それがどのように機能するかわかりません。
lat = str.substring(0, 11);
lon = str.substring(12, 23);
}
//--- 新しい SMS メッセージを表示する ---
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
//--- この部分は、ブロードキャスト インテントを送信して、アクティビティで受信したメッセージを更新します ---
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("SMS_RECEIVED_ACTION");
broadcastIntent.putExtra("sms", lat);
broadcastIntent.putExtra("sms1", lon);
context.sendBroadcast(broadcastIntent);
}
}
}