3 , :
. SMS BroadcastReceiver
. MapView ItemizedOverlay
. BroadcastReceiver , .
A: SMS
BroadcastReceiver:
public class SMSBroadcastReceiver extends BroadcastReceiver
{
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals (SMS_RECEIVED))
{
Bundle bundle = intent.getExtras();
if (bundle != null)
{
Object[] pdusData = (Object[])bundle.get("pdus");
for (int i = 0; i < pdus.length; i++)
{
SmsMessage message = SmsMessage.createFromPdu((byte[])pdus[i]);
}
}
}
}
}
:
<manifest ... >
<application ... >
<receiver
android:name=".SMSBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
</application>
</manifest>
( : Android - SMS-)
B:
, ItemizedOverlay, MapView , :
class LocationOverlay extends ItemizedOverlay<OverlayItem>
{
public LocationOverlay(Drawable marker)
{
super( boundCenterBottom(marker));
}
@Override
protected OverlayItem createItem(int itemNumber)
{
GeoPoint point =
return new OverlayItem(point, null, null);
}
@Override
public int size()
{
return 1;
}
}
, :
public class CustomMapActivity extends MapActivity
{
MapView map;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView)findViewById(R.id.map);
LocationOverlay overlay = new LocationOverlay(getResources().getDrawable(R.drawable.icon));
map.getOverlays().add(overlay);
}
}
C:
(. BroadcastReceiver). MapActivity , . MapActivity , -, .
( CustomMapActivity):
private final String UPDATE_MAP = "com.myco.myapp.UPDATE_MAP"
BroadcastReceiver ( CustomMapActivity):
private BroadcastReceiver updateReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
int longitude = intent.getIntExtra("long");
int latitude = intent.getIntExtra("lat");
map.invalidate();
}
}
BroadcastReceiver ( CustomMapActivity.onCreate):
IntentFilter filter = new IntentFilter();
filter.addAction(UPDATE_MAP);
registerReceiver(updateReceiver , filter);
BroadcastReceiver ( SMSBroadcastReceiver.onReceive):
Intent updateIntent = new Intent();
updateIntent.setAction(UPDATE_MAP);
updateIntent.putExtra("long", longitude);
updateIntent.putExtra("lat", latitude);
context.sendBroadcast(updateIntent);