2016-12-19 10 views
0

私はAndroidのアプリケーションの自動テストを改善するプロジェクトに取り組んでいます。基本的なUIを備えた非常にシンプルなSIPクライアントがあり、アンドロイドデベロッパーのウェブサイト(https://developer.android.com/guide/topics/connectivity/sip.html)のAPIガイドを読んで、SIPコールを受信して​​作成するだけです。Androidアプリのメソッドを遠隔から呼び出す方法は?

同じローカルネットワークまたは同じWi-Fiに接続されたPCからこのアプリケーションをリモートで制御する必要があります。コマンドまたは類似のもの(電話とやりとりすることなく)を自分の電話で通常実行されているアプリに送ります。具体的な例として、私はsipAddress(アプリで、sipAddressは、テキストボックスから取得されます)、私がやりたいことはあるメソッド呼び出しinitiateCall()掲載:

  • 自分の携帯電話にアプリを起動する

    • を私のPCからsipAddressをパラメータとして与えるメソッドinitiateCall()を呼び出す(私は実行中のアプリケーションからUIを使用してはいけません。そのため、tを与える必要があります彼sipAddress
    • チェック発信コールが自分の携帯電話に

    を実行しているアプリから起動する場合、私は解決策は、ウェブ・サービスについての何かでなければならないと思ったが、私は任意のより良いアイデアを持っていないと私はどのように始めるべきかわからず、どこでこの問題を解決するのか分からないので、私はあなたが助けを必要としているのです。

    public void initiateCall() { 
        try { 
         SipAudioCall.Listener listener = new SipAudioCall.Listener() { 
         // set up the listener for outgoing calls 
          @Override 
          public void onCallEstablished(SipAudioCall call) { 
           call.startAudio(); 
           call.setSpeakerMode(true); 
           updateStatus(call, 2); 
          } 
    
          @Override 
          public void onCallEnded(SipAudioCall call) { 
           updateStatus("Call End"); 
          } 
         }; 
    
         call = manager.makeAudioCall(me.getUriString(), sipAddress, 
           listener, 30); 
    
        } catch (Exception e) { 
         Log.i("WalkieTalkieActivity/InitiateCall", 
           "Error when trying to close manager.", e); 
         if (me != null) { 
          try { 
           manager.close(me.getUriString()); 
          } catch (Exception ee) { 
           Log.i("WalkieTalkieActivity/InitiateCall", 
             "Error when trying to close manager.", ee); 
           ee.printStackTrace(); 
          } 
         } 
         if (call != null) { 
          call.close(); 
         } 
        } 
    } 
    
  • 答えて

    0

    あなたはREST APIスタイルを使用できます。最小限のWebサーバーを設定する必要があります。

    たとえば、URL phoneip/ctrl/makecall?number=yournumberにアクセスする場合は、サーバサイドの方法で正しく設定されているかどうかを確認してください。その後、メソッドを呼び出してGET変数またはPOST変数を引数として使用できます。

    Java Webサーバーライブラリ/フレームワークを調べる必要があります。その目的のために軽量のものを選ぶことができます。たとえば、this oneです。 セキュリティ機能(認証を保護して)を簡単に追加することもできます。 sparkjavaと

    import static spark.Spark.*; 
    
    .... 
    
    get("/ctrl/makecall", (request, response) -> { 
         String phonenum = request.queryParams("number"); //may not be accurate; you have to determine the GET variable called "number" in that case; you can rename it; see docs!!! 
         //call your method with proper arguments 
    }); 
    
    +0

    こんにちは、迅速な答えをありがとう!私はあなたが何を意味しているか知っていると思うが、私はこのウェブサーバを設定する "どこ"を理解していない:それはアプリのコード内のものか外部ですか?私は全体的なロジックビューを想像することはできません:私のPCから私はウェブサーバーを呼び出すと、これはアプリを呼び出す? –

    +0

    ようこそ。はい、その場合、ウェブサーバーはアプリの一部です。通常、いくつかの方法から始めました(開始のために1つだけですが、設定のためにいくつかのものがあります)。図書館は仕事の大部分を担います。あなたのアプリケーションはあなたが指定したポートで待機し、指定した場合には回答を提供します。全体的なビュー:あなたからあなたはブラウザやwgetでurl(Webページにアクセスする)を呼び出し、そのような何かをカールします。そして、アプリケーション内でそのページのメソッド(ページがあれば通常はHTML出力を変更するために使用される)が呼び出され、アプリケーション内の目的のメソッドが呼び出されます。 – rudib

    +0

    ありがとう、ありがとうございます。私はできるだけ多くの情報を手に入れて、このようにしてみましょう! –

    関連する問題