Я делаю приложение, которое нужно запускать при входящем звонке на телефоне Android. Я хочу, чтобы мое приложение просто прослушивало входящие вызовы и запускало свою собственную Activity
в фоновом режиме. На самом деле я делаю приложение, которое работает, как при входящем вызове, тогда светодиод мигает на плате Arduino.
Я думаю, что глава 12. Телефонные приложения в 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();
}
}
На странице, с которой я связан, есть больше информации о том, как это работает, и о дополнительных вещах, которые вы могли обнаружить (например, когда пользователь отвечает или отклоняет вызов). Поэтому обязательно прочитайте его.
Сделайте что-нибудь, когда телефон звонит, объясняет, как слушать звонок телефона, чтобы начать, а затем вам нужно будет начать сервис.
Если вы хотите сделать это с помощью Bluetooth, посмотрите на проект под названием Amarino, который вы можете установить с помощью дешевого модуля Bluetooth с Bluetooth.
Я сделал это, и он отлично работает.
Вы можете установить для этого фильтр намерений. Цель будет ограничена деятельностью.
Это то, что вы должны добавить в свой манифест (внутри действия):
<intent-filter>
<action android:name="android.intent.action.CALL" />
Насколько мне известно, это работает для исходящих звонков, вам нужно будет проверить, работает ли он для входящих.