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和棉花糖兩者中工作。我不知道確切的原因。任何人都知道,請張貼答案。

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(); 
     } 
    }