首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PJSUA2无法从安卓6.0.1进行呼叫

PJSUA2无法从安卓6.0.1进行呼叫
EN

Stack Overflow用户
提问于 2017-02-17 15:02:08
回答 5查看 1.3K关注 0票数 2

我正在构建一个使用pjsua2库的应用程序。该库附带的示例应用程序运行良好。但在我的应用程序中,当我尝试使用以下代码拨打电话时,

代码语言:javascript
复制
    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;

我得到了下面的异常,

代码语言:javascript
复制
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

这个错误只出现在棉花糖中,在Kitkat设备中,它工作正常。有人能解释一下这个问题吗?

EN

回答 5

Stack Overflow用户

发布于 2017-06-01 18:20:21

在Android中,我们需要从棉花糖获取权限。

我使用下面的代码来检查并获得用户的权限。

代码语言:javascript
复制
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();
        }
    }
票数 4
EN

Stack Overflow用户

发布于 2017-03-16 17:06:26

可以为构建PJSIP的Android SDK目标进行定义。您应该在Application.mk文件中将APP_ABI指定为:=ALL。在此之前,您还需要检查NDKarmeabi。在构建PJSUA2之前,请仔细阅读here的这些内容。

票数 2
EN

Stack Overflow用户

发布于 2017-02-17 16:52:18

当我把我的targetSdkVersion从25变成19的时候,这个调用在Kitkat和棉花糖中都开始起作用了。我不知道确切的原因。任何知道答案的人,请把答案贴出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42291432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档