0

これが私がやろうとしていることです。BroadcastReceiver名SmsAlarmReceiverを呼び出すメインアクティビティがあります。

Intent i = new Intent(SmsAlarmReceiver.ALARM_ACTION);
sendBroadcast(i);

今、私の SmsAlarmReceiver.java は次のようになります。

public class SmsAlarmReceiver extends BroadcastReceiver {

LocationManager locationmanager;
public static final String ALARM_ACTION= "com.example.finaltracking.SMS_REC";
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    locationmanager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    Intent smsintent = new Intent(context,SmsService.class);
    PendingIntent pendingintent = PendingIntent.getService(context, 0, smsintent, 0);
    locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1*60*1000,10,pendingintent);
}

}

したがって、この受信機では、位置の変更をリッスンするために pendingIntent を使用して位置の更新を要求しています。

SmsService.java という名前の私のサービスは次のようになります。

public class SmsService extends IntentService {

public SmsService(String name) {
    super(name);
    // TODO Auto-generated constructor stub
}

@Override
protected void onHandleIntent(Intent intent) {
    // TODO Auto-generated method stub
    Bundle bundle = intent.getExtras();
    Location location = (Location) bundle.get(LocationManager.KEY_LOCATION_CHANGED);
    Log.d("msg", "Loc is " + location.getLatitude() +","+ location.getLongitude());
    sendMessage("983******","msg is " + location.getLatitude()+"," +location.getLongitude());
}

private void sendMessage(String rec,String msg){

    //PendingIntent intent = PendingIntent.getActivity(this,0,new Intent(this,MainActivity.class),0);
    SmsManager sms = SmsManager.getDefault();
    //Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
    ArrayList<String> parts = sms.divideMessage(msg);
    sms.sendMultipartTextMessage(rec,null, parts,null, null);
}


  }

私のアプリは強制終了ではありませんが、指定された受信者にメッセージを送信できません。

この問題に対するより良い代替手段はありますか?要するに、ユーザーが追跡機能を有効にすると、5 分ごとにユーザーの GPS 位置を送信する機能を実装したいと考えています。サービス/インテント サービス/ブロードキャスト レシーバーを使用してこれを実装するにはどうすればよいですか?助けてください。 .

4

1 に答える 1

0

CWAC Location Pollerと呼ばれるものがあります: Finding Your Location Periodically

それの改良版https://github.com/alexbirkett/cwac-locpoll

いくつかの単純なバージョン

http://developer.android.com/training/location/retrieve-current.html

http://javapapers.com/android/get-current-location-in-android/

于 2013-10-17T12:35:43.417 に答える