NQ Call Blockerのように、モバイル向けの通話ブロックアプリケーションはたくさんあります。ただし、これらのアプリケーションでは、ブラックリストに番号を追加すると、発信者には「ビジートーン」と聞こえます。また、発信者はほんの一瞬「着信音」を聞くことができます。つまり、意図的に通話を拒否しているように見えます。
さて、私が試しているのは、「ビジートーン」の代わりに「到達不能トーン」を送信できる通話ブロックアプリケーションを開発することです... ??
たとえば、別の番号から携帯電話に電話をかけ、呼び出し音が鳴ったら、モードを「機内モード」に変更してみてください。 「到達不能なトーン」が聞こえます。 [一部のAndroidデバイスでは、電源ボタンを長押しして、携帯電話が鳴っているときに「機内モード」を有効にすることができます。]
PhoneStateListener の実装を試みることができます。電話を受けたときに、それを番号の配列と比較します。禁止されている場合は、飛行機モードに切り替えます。このようなもの:
case TelephonyManager.CALL_STATE_RINGING: // incoming call
{
for (int i = 0; i < forbiddenNumber.size; i++) {
if (incomingNumber.equals(forbiddenNumber[i])) {
// read the airplane mode setting
boolean isEnabled = Settings.System.getInt(
getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1;
// toggle airplane mode
Settings.System.putInt(getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0
: 1);
// Post an intent to reload
Intent intent = new Intent(
Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", !isEnabled);
sendBroadcast(intent);
}
}
WRITE_SETTINGS
への許可を忘れないでください
「到達不能」信号は電話から送信されません。代わりに、それはあなたのキャリアによって送られます。
あなたの番号に到達できないとき、それは文字通りセルタワーがあなたに到達できないことを意味します。そのため、誰かがあなたに電話をかけると、タワーはあなたを見つけようとします。それができない場合は、「到達不能」信号を送信します。偽造してデバイスから送信することはできません。
Raghavが指摘しているように、これを行うことはできないので、次に考えられるのは、これらのキャリアDTMF制御トーンを偽造することです。ネットワークがビジー、電話番号が切断されているなど。
その後すぐに、アプリがそれを実行できないことに気付くでしょう...電話に応答する前(電話会社ではないため)でも、応答した後でも、DTMFのトーンを「偽造」することはできません。多くの人がグーグル-Androidによる見落としであると考えていると答えました。両方についてここに多くの投稿。
はい、もちろん、DTMFを手動で入力することはできます(または、内線電話を呼び出したり、アカウント番号を入力したりすることはできませんでした)。それは、APPが自動的にそれを行うことができないということです...多くの人の迷惑になりますPBX開発者。申し訳ありませんが、これは私たち全員にとって残念です...