1

Ich baue eine app pjsua2 Bibliothek. Die Beispielanwendung, die mit der Bibliothek geliefert wird, funktioniert einwandfrei. Aber in meiner app, wenn ich versuche, einen Anruf mit dem folgenden Code zu machen,PJSUA2 kann nicht Anruf von Android machen 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; 

Ich erhalte die Ausnahme unten,

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 

Dieser Fehler kommt nur in Eibisch, in Kitkat Gerät, es funktioniert gut. Kann jemand etwas Licht in dieses Thema werfen?

Antwort

0

Wenn ich meine targetSdkVersion 25-19 gemacht, begann das Gespräch in beiden Kitkat und Eibisch arbeiten. Ich kenne den genauen Grund nicht. Wer es weiß, bitte posten Sie die Antwort.

2

Es ist möglich, zu definieren, was Android SDK zielen Sie PJSIP bauen. Sie sollten APP_ABI als :=ALL in Ihrer Application.mk Datei angeben. Andere Dinge, die Sie vorher überprüfen möchten, sind NDK und armeabi. Lesen Sie sorgfältig diese Dinge here bevor Sie PJSUA2 bauen.

0

Ich hatte das gleiche Problem, weil ich die RECORD_AUDIO Erlaubnis zur Laufzeit nicht angefordert habe.

Überprüfen Sie die documentation in Bezug auf Berechtigungen.

3

In Android von Marshmallow müssen wir Berechtigungen erhalten.

Ich habe den folgenden Code verwendet, um die Berechtigungen des Benutzers zu überprüfen und zu erhalten.

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