关于短信触发的拍照上传

TsinghuaADer10 2012-03-28 02:59:50
我已经写好的了一个Activity。在这个Activity中我只要按下一个拍照的button.就会执行 mCamera.takePicture(mShutterCallback, null, mPictureCallback);然后通过mPictureCallback将刚拍的用socket推送至PC机。现在我想用短信来触发拍照。该怎么办?
我现在的做法是在这个Activity中放了代码注册的广播接收。
public void onResume()
{
super.onResume();
Log.d("OnResume","begin");
mReceiver=new Smsreceiver();
mfilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(mReceiver,mfilter);
Log.d("onResume","end");
}

@Override
public void onPause()
{
Log.d("onPuase","begin");
unregisterReceiver(mReceiver);
Log.d("onPause","end");
}
但是一执行的话。执行完onResume马上执行onPause。然后报错连相机都还没打开。怎么办。
public class Smsreceiver extends BroadcastReceiver
{
private static final String queryString="@shoot";
@Override
public void onReceive(Context context,Intent intent)
{
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
{
//收到Broadcast会跑到这里
Log.d("短信","成功接收!");
Bundle extras = intent.getExtras();
if (extras == null) return;
Object[] pdus = (Object[]) extras.get("pdus"); //pdu为一条短信
for (int i = 0; i < pdus.length; i++)
{
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String msg=message.getMessageBody();
if(msg.startsWith(queryString))//短信开头以demo:shoot开头的话则。。。你懂的
{
Log.d("短信","成功进入!");
mCamera.takePicture(mShutterCallback, null, mPictureCallback);
}
}
}
}
}这个那个继承广播接受者的类。

...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zz_xyz 2012-03-30
  • 打赏
  • 举报
回复
恭喜楼主
都这么晚了
求分分...
TsinghuaADer10 2012-03-30
  • 打赏
  • 举报
回复
找到问题了。我的是双模手机伤不起啊。。。。publicstatic SmsMessage createFromPdu(byte[] pdu) {
SmsMessageBase wrappedMessage;
int activePhone = TelephonyManager.getDefault().getPhoneType();
if (PHONE_TYPE_CDMA == activePhone) {
wrappedMessage = com.android.internal.telephony.cdma.SmsMessage.createFromPdu(pdu);
} else {
wrappedMessage = com.android.internal.telephony.gsm.SmsMessage.createFromPdu(pdu);
}
returnnew SmsMessage(wrappedMessage);
}
就是这个方法害死我了。模拟机上可以跑、真机到这里就挂掉有木有!!!
TsinghuaADer10 2012-03-30
  • 打赏
  • 举报
回复
找到问题了。我的是双模手机伤不起啊。。。。publicstatic SmsMessage createFromPdu(byte[] pdu) {
SmsMessageBase wrappedMessage;
int activePhone = TelephonyManager.getDefault().getPhoneType();
if (PHONE_TYPE_CDMA == activePhone) {
wrappedMessage = com.android.internal.telephony.cdma.SmsMessage.createFromPdu(pdu);
} else {
wrappedMessage = com.android.internal.telephony.gsm.SmsMessage.createFromPdu(pdu);
}
returnnew SmsMessage(wrappedMessage);
}
就是这个方法害死我了。模拟机上可以跑、真机到这里就挂掉有木有!!!
阿鹏兄 2012-03-29
  • 打赏
  • 举报
回复
这个思路可以呀
TsinghuaADer10 2012-03-28
  • 打赏
  • 举报
回复
都没有人么?自己顶。。。

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧