Громкая связь не работает, когда я получаю или получаю вызов

Я создаю приложение, которое автоматически переключается на громкую связь при поступлении или получении вызова. Я надеюсь, что функция будет работать нормально.

Для того, чтобы автоматически переключаться на громкую связь при звонке или приеме, я написал код следующим образом.

      package com.example.autospeaker;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;

public class CallCheckReceiver extends BroadcastReceiver {
    String mLastState;

    @Override
    public void onReceive(Context context, Intent intent) {
        AudioManager audioManager = (AudioManager) context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
        audioManager.setMode(AudioManager.MODE_IN_CALL);

        if (intent.getAction().equals("android.intent.action.PHONE_STATE")) {
            Bundle extras = intent.getExtras();
            if (extras != null) {
                String state = extras.getString(TelephonyManager.EXTRA_STATE);
                if (state.equals(mLastState)) {
                    return;
                } else {
                    mLastState = state;
                }
                if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                    Log.d("PHONE_STATE", "RINGING");

                } else if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
                    audioManager.setSpeakerphoneOn(true);
                    Log.d("PHONE_STATE", audioManager.isSpeakerphoneOn() ? "스피커폰" : "내장스피커");
                    Log.d("PHONE_STATE", "OFFHOOK");

                } else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
                    audioManager.setSpeakerphoneOn(false);
                    Log.d("PHONE_STATE", audioManager.isSpeakerphoneOn() ? "스피커폰" : "내장스피커");
                    Log.d("PHONE_STATE", "IDLE");
                }
                Log.d("qqq", "phone state : " + state);
            }

        }
    }
}

Я также добавил разрешения в файл манифеста, как показано ниже.

      <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">



    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AutoSpeaker"
        tools:targetApi="31">

        <receiver
            android:name=".CallCheckReceiver"
            android:enabled="true"
            android:exported="true"
            android:label="CallCheckReceiver"
            android:process=".cCallCheckReceiver">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

</manifest>

И я извлек файл apk и запустил приложение на смартфоне Samsung. И я позвонил на смартфон Samsung, но громкая связь не работала. Я никогда не пытался звонить кому-то еще со смартфона Samsung.

Я просмотрел много данных, связанных с функцией, но не нашел решения.

Буду признателен, если подскажете, в чем проблема.

0 ответов

Другие вопросы по тегам