Здравствуйте, я пытаюсь создать приложение, в котором оно будет что-то делать после завершения вызова, но до сих пор я пытался прослушивать состояние телефона, и оно не регистрировалось.Я могу начать Java-класс в начале телефонного звонка, но не когда он закончился.в основном я пытаюсь заменить действие onclick простым зависанием телефона.
Мой onClickListener:
mic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!listening) {
makePhoneCall();
// Update the icon background
runOnUiThread(new Runnable() {
@Override
public void run() {
mic.setBackgroundColor(Color.GREEN);
}
});
} else {
// Update the icon background
runOnUiThread(new Runnable() {
@Override
public void run() {
mic.setBackgroundColor(Color.LTGRAY);
}
});
microphoneHelper.closeInputStream();
listening = false;
}
}
});
Мой makePhoneCall:
public void makePhoneCall(){
String number=input.getText().toString();
if (number.trim().length()>0)
{
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL);
}
else{
String dial="tel:"+number;
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(dial)));
capture = microphoneHelper.getInputStream(true);
new Thread(new Runnable() {
@Override
public void run() {
try {
speechService.recognizeUsingWebSocket(getRecognizeOptions(capture),
new MicrophoneRecognizeDelegate());
} catch (Exception e) {
showError(e);
}
}
}).start();
listening = true;
}
}
else
{
Toast.makeText(MainActivity.this, "Enter Phone Number", Toast.LENGTH_SHORT).show();
}
}
Мой PhoneStateListener:
public class CallReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_RINGING)) {
// Phone number
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// Ringing state
// This code will execute when the phone has an incoming call
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_IDLE)
) {
// This code will execute when the call is answered
}else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)){
microphoneHelper.closeInputStream();
listening = false;
}
}
}