2016-12-15 19 views
0

Androidスタジオから電話をかけています。コードは次のとおりです。 いつでも電話の状態を取得したいと思います。リンク:https://developer.android.com/reference/android/telecom/Call.html は、クラス呼び出しを使用して取得することができます。私はCall.getState()を使用する場合、私は現在の状態を取得できる必要があります。しかし、私はコンパイルエラーを受け取ります: エラー:(28,20)エラー:Call()はコールで公開されていません。外箱からはアクセスできません。ダイヤル、呼び出し、接続、DI接続、保留などのいくつかの呼び出し状態が定義されています。 コードを実行すると、呼び出すエミュレータの画面が表示されます。アンドロイド通話の通話状態を取得する方法

開発者ガイドでは、これらのクラスの使用例は提供されていません。 ありがとうございます。

package com.example.ramesh.makeacall; 

import android.app.Activity; 
import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.telecom.Call; 
import android.telephony.*; 

import android.util.Log; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Call call; 
     call = new Call(); 
     call(); 

    } 
    private void call() { 

     try { 

      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:5555551212")); 
      System.out.println("====before startActivity===="); 
      startActivity(callIntent); 


     } catch (ActivityNotFoundException e) { 
      Log.e("helloAndroid","Call failed",e); 
     } 
    } 

    } 

答えて

0

は(ただし、それを試していない)、このように使用してみてください -

Call.Callback callback = new Call.Callback() { 
    @Override 
    public void onStateChanged(Call call, int state) { 
     super.onStateChanged(call, state); 
     if(state == Call.STATE_RINGING){ 
      //you code goes here 
     } 
    } 
}; 
+0

ありがとう..それは動作します –

0
public class MyPhoneStateListener extends PhoneStateListener { 
    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     switch (state) { 
      case TelephonyManager.CALL_STATE_RINGING: 
       handleRinging(incomingNumber); 
       break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       handleOffHook(); 
       break; 
      case TelephonyManager.CALL_STATE_IDLE: 
       handleIdle(); 
       break; 
     } 
     super.onCallStateChanged(state, incomingNumber); 
    } 
} 

と登録statelistener:

telephonyManager =(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)。 telephonyManager.listen(myPhoneStateListener、PhoneStateListener.LISTEN_CALL_STATE);

+0

感謝を。上記のコードは3つの呼び出し状態しか与えません。私はクラスの呼び出しを定義しようとしています:https://developer.android.com/reference/android/telecom/Call.htmlで定義されています。これは、CALL_ACTIVE、CALL_DISCONNECTED、CALL_HOLDなどのようないくつかの状態を与えます。どのようにしてクラスCall()を使用できますか? –

+0

コールクラスはアンドロイドのドキュメントに従って公開されていないので、クラスコールは使用できません。私は上記の3の外にコールの現在の状態を得ることができるようにそれを回避する方法はありますか? –

関連する問題