1

私はpjsua2ライブラリを使用してアプリケーションを構築しています。ライブラリが付属しているサンプルアプリケーションは正常に動作しています。私のアプリ、私は以下のコードを使用して通話をしようと、PJSUA2はAndroid 6.0.1から電話をかけることができません

if (currentCall != null) {return;} 
    String buddy_uri = "sip:" + number + "@" + domain; 
    MyCall call = new MyCall(account, -1); 
    CallOpParam prm = new CallOpParam(true); 
    try { 
     call.makeCall(buddy_uri, prm); 
    } catch (Exception e) { 
     call.delete(); 
     return; 
    } 
    currentCall = call; 

に、私は以下の例外を取得しています。しかし、

java.lang.Exception: Title:  pjsua_call_make_call(acc.getId(), 
&pj_dst_uri, param.p_opt, this, param.p_msg_data, &id) 
Code:  420003 
Description: Audio subsystem not initialized (PJMEDIA_EAUD_INIT) 
Location: ../src/pjsua2/call.cpp:490 

このエラーは、キットカット装置では、唯一のマシュマロに来て、そのうまく動作します。誰かがこの問題にいくつかの光を投げることができますか?

答えて

0

targetSdkVersionを25から19にしたとき、呼び出しはKitkatとMarshmallowの両方で機能し始めました。私は正確な理由を知らない。誰でも知っている、答えを投稿してください。

2

PJSIPを構築するAndroid SDKターゲットを定義することは可能です。 Application.mkファイルにAPP_ABI:=ALLと指定する必要があります。あなたが以前に確認したいことは、NDKarmeabiです。 PJSUA2をビルドする前に、これらのことを慎重にお読みください。here

0

実行時にRECORD_AUDIOのアクセス権を要求しなかったため、私と同じ問題が発生しました。

許可についてはdocumentationを確認してください。

3

AndroidのMarshmallowからアクセス許可を取得する必要があります。

以下のコードを使用して、ユーザーからのアクセス許可を確認して取得しました。

private static final int REQUEST_PERMISSIONS = 100; 
    private static final String PERMISSIONS_REQUIRED[] = new String[]{ 

      Manifest.permission.READ_CONTACTS,Manifest.permission.RECORD_AUDIO 

    }; 

    private boolean checkPermission(String permissions[]) { 
     for (String permission : permissions) { 
      if (ContextCompat.checkSelfPermission(getApplicationContext(), permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
     return true; 
    } 

    private void checkPermissions() { 
     boolean permissionsGranted = checkPermission(PERMISSIONS_REQUIRED); 
     if (permissionsGranted) { 
      Toast.makeText(this, "You've granted all required permissions!", Toast.LENGTH_SHORT).show(); 
     } else { 
      boolean showRationale = true; 
      for (String permission : PERMISSIONS_REQUIRED) { 
       showRationale = ActivityCompat.shouldShowRequestPermissionRationale(this, permission); 
       if (!showRationale) { 
        break; 
       } 
      } 

      String dialogMsg = showRationale ? "We need some permissions to run this APP!" : "You've declined the required permissions, please grant them from your phone settings"; 

      new AlertDialog.Builder(this) 
        .setTitle("Permissions Required") 
        .setMessage(dialogMsg) 
        .setCancelable(false) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          ActivityCompat.requestPermissions(mActivity, PERMISSIONS_REQUIRED, REQUEST_PERMISSIONS); 
         } 
        }).create().show(); 
     } 
    } 
関連する問題