Как достичь один-к-одному андроид на андроид с помощью RTP AudioStream? - PullRequest
1 голос
/ 29 апреля 2019

Я работаю на Android RTP аудио-поток один к одному.Код работает нормально, если я связываю его с тем же ip и портом устройства.

У меня есть рабочий код отправителя, который отправляет и получает сам.

То, что я хочу, это чтобы аудио потокПерейдите в приложение-приемник Android, и затем оба приложения на обоих телефонах выполнят полный вызов «один на один» на основе аудиопотока RTP.

Я пробовал AudioStream.getRemoteAddress () и AudioStream.getRemotePort () в audioStream.ассоциировать с помощью Inet.

import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import android.media.audiofx.AudioEffect;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.net.rtp.AudioCodec;
import android.net.rtp.AudioGroup;
import android.net.rtp.AudioStream;
import android.net.rtp.RtpStream;
import android.os.StrictMode;
import android.text.format.Formatter;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import  android.media.MediaPlayer;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        TextView t = findViewById(R.id.ip);
        try {

            AudioManager audio =  (AudioManager) getSystemService(Context.AUDIO_SERVICE);

            audio.setMode(AudioManager.MODE_IN_COMMUNICATION);

            audio.setSpeakerphoneOn(true);

            AudioGroup audioGroup = new AudioGroup();

            audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);

            AudioStream AudioStream = new AudioStream(InetAddress.getByName(this.getLocalIpAddress()));

            AudioStream.setCodec(AudioCodec.PCMU);

            AudioStream.setMode(RtpStream.MODE_NORMAL);

            AudioStream.associate(InetAddress.getByName(this.getLocalIpAddress()),AudioStream.getLocalPort());

            t.setText(this.getLocalIpAddress()+":"+AudioStream.getLocalPort());

            AudioStream.join(audioGroup);

            Log.e("Pass",getLocalIpAddress());

        } catch (Exception e) {
            Log.e("----------------------", e.toString());
            e.printStackTrace();
        }
    }
    public String getLocalIpAddress()
    {
        WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
        Log.e("-----------ip", ip);
        return ip;
    }

}

Вот разрешение, например:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.USE_SIP" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-feature android:name="android.hardware.sip.voip" android:required="true" />
    <uses-feature android:name="android.hardware.wifi" android:required="true" />
    <uses-feature android:name="android.hardware.microphone" android:required="true" />

Мне нужна помощь относительно этого кода, чтобы я мог установить его на оба телефона Android, и они отправлять и получать 1-1 друг другу.Многие люди задавали один и тот же вопрос, который я знаю, но никто из них не отвечает на мой вопрос.

Если кто-то может любезно помочь, это будет оценено.

...