2017-08-26 11 views
9

私は私のAndroidアプリが与えられた電話番号が一つのリングコール(すなわち、私がハングアップし、その後、私の側に音に最初のリングを待ち、番号を呼び出す)を行うことによって作業されているかどうかをできるようにしたいです。呼び出し音(電話が切れている)がない場合は、それも知りたいです。それは電話番号のpingのようなものです。これが可能であれば、どうすればできますか?プログラムでワンリングコールを行うにはどうしたらいいですか?

+1

だけ知っているので、ダイヤルトーンは通常、それはあなたが呼び出している番号とは何の関係もありません、あなたがあなた自身の回線が接続されて知っているように、ダイヤルを開始する前に聞こえる自分自身のライン上の音を指し、 。私は、あなたが「1つの呼び出しを呼び出して」と「リングがない場合」と言うことを意味していると思います。また、電話をかけたときに電話が切れていると、SITと "ダイヤルした番号が使用中ではありません"というメッセージが表示される前に2回鳴ります。さらにいくつかのケースがあります。出典:私はコールセンターで働いています。 –

+0

ありがとう!私は訂正を感謝します:) – Frank

+0

多分私はそれを間違って読んでいるが、_incoming_呼び出しのためのコードではない?私の考えは、FYI呼び出し... – Frank

答えて

0

ザ・あなたは「リングバック」と呼ばれるに言及されている聞こえます。 「ダイヤルトーン」は、接続されていない電話をピックアップするときに聞こえる音です。

アンドロイドTelephonyクラスは(some peopleがハッキングの着信とoutgoing通話音声を聴くの成功を報告しているが)SDKアプリケーションがそうNDKに頼らない限り、リングバックが可能に表示されない監視、オーディオを呼び出すために聞くためにはアクセスできません

あなたのアプローチの問題は、あなたがオーディオを取得するために管理している場合でも、あなたは一時停止のためのライン上の音に耳を傾ける必要があるということです

は - 一部のプロバイダが無効の状態、さらには他の人のための自動化されたメッセージを読んでいるので、これは信頼できるものではありませんユーザーが自分のリングバックサウンド(曲など)をアップロードできるようにします。

あなたのための最良のオプションはTelephonyManager.EXTRA_STATE_RINGINGが開始されたときのために耳を傾け、その後ハングアップするまでの時間のいくつかの任意の量を待つことです。 CALL_STATE_OFFHOOKなどのその他の状態は、状況に関連しません。

public void onReceive(Context context, Intent intent) { 
    if (timer == null && TelephonyManager.EXTRA_STATE_RINGING.equals(intent.getStringExtra(TelephonyManager.EXTRA_STATE))) { 
     timer = new Handler(); //member variable 
     timer.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       hangUp(); 
      } 
     }, 1500); //arbitrary delay 
    } 
} 
関連する問題