2012-01-09 20 views
1

私のコードでCallの値が0になっています。すなわち、私は3つの内部APIを使用しています彼らはCall.java呼び出し値がnullの場合

http://hi-android.info/src/com/android/internal/telephony/Call.java.html

CallManger.java

http://hi-android.info/src/com/android/internal/telephony/CallManager.java.html

Connection.java

http://hi-android.info/src/com/android/internal/telephony/Connection.java.htmlです。

私は、呼び出しと接続クラスのサブクラスを作成しました。

public class MyCall extends Call{ 

    CallManager cm = CallManager.getInstance(); 
    Phone.State state; 
    Connection c; 
    Phone mDefaultPhone; 
    private final ArrayList<Connection> emptyConnections = new ArrayList<Connection>();  


    Call ringingCall; 

    @Override 
    public List<Connection> getConnections() {    
     System.out.println("before if****"+ringingCall); 
    if(ringingCall != null){     
     System.out.println("inside if****"); 
     ringingCall = (Call) cm.getForegroundCalls(); 
     System.out.println("**call is not null***"); 
     System.out.println("value of call"+ringingCall); 
     return ((Call) ringingCall).getConnections(); 
    }   
      else 
      { 
       System.out.println("**list is null***"); 
       return emptyConnections; 
     } 
    } 

    @Override 
    public Phone getPhone() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void hangup() throws CallStateException { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean isMultiparty() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    public Connection 
    getEarliestConnection() { 
     System.out.println("inside EarliestConnection"); 
     List l; 
     long time = Long.MAX_VALUE; 
     Connection c; 
     Connection earliest = null; 

     l = getConnections(); 
     System.out.println("value of connection is=="+l); 
     if (l == null) { 
      return null; 
     }else if (l.size() == 0) 
     { 
      return null; 
     } 


     for (int i = 0, s = l.size() ; i < s ; i++) { 
      c = (Connection) l.get(i); 
      long t; 

      t = c.getCreateTime(); 

      if (t < time) { 
       earliest = c; 
       time = t; 
      } 
     } 

     return earliest; 
    } 
    } 

私はこのようなCallMangerにと呼ばれる:

CallManager cm = CallManager.getInstance(); 

私の別のクラスがCallUpdateです。 OutgoingCall States(つまり、他の端末の状態がビジー状態、電源オフ状態、または到達不能状態)が表示されます。

public class CallUpdate { 

    Call myCall = new MyCall(); 
    Connection myConn = new MyConnection(); 
    CallManager cm = CallManager.getInstance(); 

     public Object getCallFailedString(){ 

      myConn = myCall.getEarliestConnection(); 
      System.out.println("myConn is ******"+myConn); 
      System.out.println("myCall is ******"+myCall); 

      if(myConn == null){ 
       System.out.println("myConn is null ******"); 
       return null; 
      }     
      else 
      { 
       Connection.DisconnectCause cause = myConn.getDisconnectCause();      
       System.out.println("myconn is not null ******"+cause); 


       switch(cause){ 

       case BUSY : 
        System.out.println("inside busy"); 
       break; 

       case NUMBER_UNREACHABLE : 
        System.out.println("inside un-reachable"); 
       break; 

       case POWER_OFF : 
        System.out.println("inside power off"); 
       break; 
       }  


     } 
    return myConn; 
} 

} 

しかし、上記のCall.javaのメソッドでは、Call valueがnullになっています。

コールringingCall

public List<Connection> getConnections() {    
    System.out.println("before if****"+ringingCall); 
    if(ringingCall != null){     
    System.out.println("inside if****"); 
    ringingCall = (Call) cm.getForegroundCalls(); 
    System.out.println("**call is not null***"); 
    System.out.println("value of call"+ringingCall); 
    return ((Call) ringingCall).getConnections(); 
}   
     else 
     { 
      System.out.println("**list is null***"); 
      return emptyConnections; 
    } 
    } 

rigingCall値はnullです。なぜこの値がnullですか?私は正しい方法でやっていますか? plzヘルプme

Thxです。

+0

@バナティ:私の質問に答えることはできますか?私は正しい道を進んでいますか? – shiv1229

+0

申し訳ありませんが、Androidについてはわかりません。しかし、Brianが答えたときに 'Call ringingCall = null; 'の代わりに' Call ringingCall = new Call(); 'を試すことができます。 – Vaandu

+0

@ shiv1229 - あなたがこれについて尋ねたすべての質問を読んで、あなたが貨物カルトプログラミングの形式に従事しているように見えるでしょう。何を入力しているのか理解していなければ、作業コードを生成できることはせいぜい無作為なことになるでしょう。私は、Javaについての初心者の本、またはOracle Javaのチュートリアルを少なくともお勧めします。 –

答えて

3

MyCallクラスのringingCallは決して初期化されないため、nullです。

myConnにもnullがあります。

+0

thk u。私のコードでそれを行う方法 – shiv1229

+0

呼び出しringingCall = null; MyCallクラスでこのように初期化されましたが、まだringingCallがnullです – shiv1229

+0

@Brain:R u there? PLZ初期化する方法を教えてください。 – shiv1229

関連する問題