我正在制作一个需要在Android手机上有来电时运行的应用程序。我希望我的应用程序只是听取来电并在后台运行自己的Activity
。实际上,我正在创建一个应用程序,就像有来电时一样,然后LED在Arduino板上闪烁。
答案 0 :(得分:2)
我认为Chapter 12. Telephone Applications中的 Android Cookbook 应该会有所帮助:
然而,简短版本是您需要收听指示电话状态已更改的广播消息。为此,您继承
BroadcastReceiver
并在清单中添加一些代码来捕获事件。
<application android:icon="@drawable/icon" android:label="Incoming Call Interceptor">
<receiver android:name="IncomingCallInterceptor">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class IncomingCallInterceptor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String msg = "Phone state changed to " + state;
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
msg += ". Incoming number is " + incomingNumber;
// TODO This would be a good place to "Do something when the phone rings" ;-)
}
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
}
我链接到的页面提供了有关其实际工作方式的更多信息以及您可以检测到的其他内容(例如,当用户回答或拒绝来电时)。所以一定要阅读它。
答案 1 :(得分:1)
Do something when the phone rings 解释了如何收听电话响铃以启动,然后您需要start a service。
答案 2 :(得分:0)
您可以为此设置一个意图过滤器。意图将受限于一项活动。
这是您必须在Manifest(活动内)中添加的内容:
<intent-filter>
<action android:name="android.intent.action.CALL" />
据我所知,这适用于拨出电话,你必须检查它是否适用于传入电话..
答案 3 :(得分:0)
如果您想使用蓝牙进行此操作,请查看名为Amarino的项目,您可以通过网络上的廉价6美元蓝牙模块进行操作。
我这样做了,效果很好。