Запустите приложение в фоновом режиме, когда телефон зазвонит на телефоне Android

1

Я делаю приложение, которое нужно запускать при входящем звонке на телефоне Android. Я хочу, чтобы мое приложение просто прослушивало входящие вызовы и запускало свою собственную Activity в фоновом режиме. На самом деле я делаю приложение, которое работает, как при входящем вызове, тогда светодиод мигает на плате Arduino.

  • 0
    Почему это с тегом "Arduino", кстати?
  • 0
    потому что я хочу показать статус входящего звонка на Arduino
Теги:
arduino

4 ответа

2

Я думаю, что глава 12. Телефонные приложения в Android Cookbook должны оказаться полезными:

Короткий вариант, однако, заключается в том, что вам необходимо прослушать широковещательное сообщение, указывающее, что состояние телефона изменилось. Для этого вы подклассифицируете BroadcastReceiver и добавьте некоторый код в манифест для захвата события.

Файл AndroidManifest.xml:

<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"/>

Файл IncomingCallInterceptor.java:

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();
    }
}

На странице, с которой я связан, есть больше информации о том, как это работает, и о дополнительных вещах, которые вы могли обнаружить (например, когда пользователь отвечает или отклоняет вызов). Поэтому обязательно прочитайте его.

  • 0
    Я использовал это, но это не работает.
  • 2
    На каком андроиде вы работаете? 4.x? Если так, то в ICS была добавлена новая мера безопасности. По сути, приложение не будет получать трансляции, пока оно не будет запущено пользователем в первый раз. Поэтому убедитесь, что ваше приложение имеет графический интерфейс и откройте его хотя бы один раз, прежде чем пытаться это сделать.
Показать ещё 1 комментарий
1

Сделайте что-нибудь, когда телефон звонит, объясняет, как слушать звонок телефона, чтобы начать, а затем вам нужно будет начать сервис.

0

Если вы хотите сделать это с помощью Bluetooth, посмотрите на проект под названием Amarino, который вы можете установить с помощью дешевого модуля Bluetooth с Bluetooth.

Я сделал это, и он отлично работает.

0

Вы можете установить для этого фильтр намерений. Цель будет ограничена деятельностью.

Это то, что вы должны добавить в свой манифест (внутри действия):

<intent-filter> 
            <action android:name="android.intent.action.CALL" />

Насколько мне известно, это работает для исходящих звонков, вам нужно будет проверить, работает ли он для входящих.

  • 0
    Ему нужен PHONE_STATE для входящих звонков. CALL работает только для исходящих звонков.
  • 0
    да, это то, что я думал .. этот ответ бесполезен :-P

Ещё вопросы

Сообщество Overcoder
Наверх
Меню