2013-08-19 39 views
-1

我在发短信时遇到问题。如何在android中发送短信背景信息

在我的应用程序中,我必须定期发送最新的经度和地位的短信。 点击发送按钮时,我必须每10分钟发送一次短信到预设的手机号码,每10分钟更新一次(假设为5次)。但经度和纬度不会频繁更新,所以它会发送相同的即使在我们改变位置的情况下,所有移动设备的位置。我怎样才能做到这一点。任何想法或示例代码请。

感谢和问候:

+1

你为什么不创建一个服务,发送你当前的长/纬?发送如此多的短信并不有效。 –

+0

你可以给我样品吗? – Sri

+0

不可以。您必须有一台服务器才能从客户端接收信息。这只是简单的发布数据到你的服务器。 –

回答

0

我不知道你是怎么想实现我会已接近这样的。

使用Alarm Manager创建重复警报..每10分钟启动广播接收器并获取当前位置详细信息将这些值传递给服务并从Service send mgs中传递。

为了您refrence 注:这是不是你需要根据你的质量要求

Reciever改变完整的解决方案:

public class AlarmReceiver extends BroadcastReceiver { 
    public void onReceive(Context context, Intent intent) { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    Intent intent=new Intent(context,Service.class); 
    //get lat/lng and pass it or get from service if u want 
    intent.putExtra("lat","lat"); 
    intent.putExtra("lon","lng"); 
    context.startService(intent); 

} 
    } 

    public void SetAlarm(Context context) { 

     AlarmManager am = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     Calendar calendar = Calendar.getInstance(); 

      calendar.setTimeInMillis(System.currentTimeMillis()); 

      calendar.add(Calendar.MINUTE, 10); 
      am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
       calendar.getTimeInMillis(), pi); 
    } 

} 

服务:

import android.app.Service; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.telephony.SmsManager; 
import android.widget.Toast; 

public class YourService extends Service { 


@Override 
public void onCreate() { 

} 

@Override 
public IBinder onBind(Intent arg0) { 
    return null; 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
} 

@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    String data=intent.getStringExtra("lat"); 
    String data=intent.getStringExtra("lng"); 

    //or get the lat/lng here a 
    SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(number to send , null, text, null, null); 
} 

@Override 
public boolean onUnbind(Intent intent) { 

} 

} 
+0

你能否为此发布一个样本。我怎样才能做到这一点? – Sri

+0

编辑检查,回答它的不完整的实现,你需要创建类似的东西......并且不要忘记清单文件中所需的权限,接收者和服务 –

-1

样品

editBtn.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 

     changeEdit(); 
     return true; 
    } 
});