Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Android中集成Twilio_Php_Android_Api_Twilio - Fatal编程技术网

Php 如何在Android中集成Twilio

Php 如何在Android中集成Twilio,php,android,api,twilio,Php,Android,Api,Twilio,我正在尝试,我已经用Java完成了呼出呼叫部分,但出于某种原因。我在安卓系统上没有成功 我也为token创建了一个php Api,但该token并没有为我提供功能代码。此api位于我们的本地服务器(即本地主机)上 我也在提供我项目的源代码 public class MonkeyPhone implements Twilio.InitListener, DeviceListener, ConnectionListener { private static final String TAG

我正在尝试,我已经用Java完成了呼出呼叫部分,但出于某种原因。我在安卓系统上没有成功

我也为token创建了一个php Api,但该token并没有为我提供功能代码。此api位于我们的本地服务器(即本地主机)上

我也在提供我项目的源代码

public class MonkeyPhone implements Twilio.InitListener, DeviceListener,
    ConnectionListener {
private static final String TAG = "MonkeyPhone";
private Device device;
private Connection connection;
private final Context context;
private BasicConnectionListener basicConnectionListener;
private BasicDeviceListener basicDeviceListener;
private Connection pendingIncomingConnection;
InputMethodManager imm;
private boolean speakerEnabled;
private boolean muteEnabled;
static String capabilityToken;
public static final String ACCOUNT_SID = "XXXXXXXXXXXXXXXXXXXXXX";
public static final String AUTH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX";

public interface BasicConnectionListener {
    public void onIncomingConnectionDisconnected();

    public void onConnectionConnecting();

    public void onConnectionConnected();

    public void onConnectionFailedConnecting(Exception error);

    public void onConnectionDisconnecting();

    public void onConnectionDisconnected();

    public void onConnectionFailed(Exception error);
}

 public interface BasicDeviceListener {
    public void onDeviceStartedListening();

    public void onDeviceStoppedListening(Exception error);
 }

public MonkeyPhone(Context context) {
    this.context = context;
    Twilio.initialize(context, this /* Twilio.InitListener */);
}

public void setListeners(BasicConnectionListener basicConnectionListener,
        BasicDeviceListener basicDeviceListener) {
    this.basicConnectionListener = basicConnectionListener;
    this.basicDeviceListener = basicDeviceListener;
}

/* Twilio.InitListener method */
@Override
public void onInitialized() {
    Log.d(TAG, "Twilio SDK is ready");
    try {
        // String capabilityToken =
        // HttpHelper.httpGet("http://------/mobile/auth.php");
         //capabilityToken = HttpHelper.httpGet("http:------/auth.php");
        capabilityToken = HttpHelper
                .httpGet("http://www.companyfoo.com/XXXXXXXXXXXXXXXXXXXXXXX");
        System.out.println(capabilityToken);
        device = Twilio
                .createDevice(capabilityToken, null /* DeviceListener */);
    } catch (Exception e) {
        Log.e(TAG,
                "Failed to obtain capability token: "
                        + e.getLocalizedMessage());
    }
}
/* Twilio.InitListener method */
@Override
public void onError(Exception e) {
    Log.e(TAG, "Twilio SDK couldn't start: " + e.getLocalizedMessage());
}
@Override
protected void finalize() {
    if (device != null)
        device.release();
    if (connection != null)
        connection.disconnect();
}
// To Make Calls
public void connect(String phoneNumber) {
    Toast toast = Toast.makeText(context, "Dialing...", Toast.LENGTH_LONG);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();
    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("PhoneNumber", phoneNumber);
     connection = device.connect(parameters, null /* ConnectionListener */);
        if (connection == null)
        {
            Log.w(TAG, "Failed to create new connection");
        // TODO Auto-generated method stub
        }
    try 
    {
        // capabilityToken =
        // HttpHelper.httpGet("http://------/mobile/auth.php");
     //         capabilityToken = HttpHelper
    //  .httpGet("https://api.twilio.com/2010-04-     01/Accounts/XXXXXXXXXXXXXXXXX/Calls.json");
        //device = Twilio.createDevice(capabilityToken, null /* DeviceListener */);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    try {
        device.disconnectAll();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
// To Disconnect Phone
public void disconnect() {
    Toast toast = Toast.makeText(context, "Call Disconnected...",
            Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();
    if (connection != null) {
        connection.disconnect();
        connection = null; 

        if (basicConnectionListener != null)
            basicConnectionListener.onConnectionDisconnecting();
    }
}
public void setSpeakerEnabled(boolean speakerEnabled) {
    if (speakerEnabled != this.speakerEnabled) {
        this.speakerEnabled = speakerEnabled;
        updateAudioRoute();
    }
}
private void updateAudioRoute() {
    AudioManager audioManager = (AudioManager) context
            .getSystemService(Context.AUDIO_SERVICE);
    audioManager.setSpeakerphoneOn(speakerEnabled);
}
public void setMuteEnabled(boolean muteEnabled) {
    if (muteEnabled != this.muteEnabled) {
        this.muteEnabled = muteEnabled;
        updateAudioRouteForMute();
    }
}
private void updateAudioRouteForMute() {
    AudioManager audioManager = (AudioManager) context
            .getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMicrophoneMute(muteEnabled);
}
public State status() {
    connection.getState();
    State statusHere = connection.getState();
    return statusHere;
}
@Override
public void onConnected(Connection arg0) {
    updateAudioRoute();
    updateAudioRouteForMute();
    if (basicConnectionListener != null) {
        basicConnectionListener.onConnectionConnected();
    }
}
@Override
public void onConnecting(Connection arg0) {
    if (basicConnectionListener != null) {
        basicConnectionListener.onConnectionConnecting();
    }
}
@Override
public void onDisconnected(Connection inConnection) {
    if (inConnection == connection) {
        connection = null;
        if (basicConnectionListener != null)
            basicConnectionListener.onConnectionDisconnected();
    } else if (inConnection == pendingIncomingConnection) {
        pendingIncomingConnection = null;
        if (basicConnectionListener != null)
            basicConnectionListener.onIncomingConnectionDisconnected();
    }
}
@Override
public void onDisconnected(Connection inConnection, int arg1,
        String inErrorMessage) {
    if (inConnection == connection) {
        connection = null;
        if (basicConnectionListener != null)
            basicConnectionListener
                    .onConnectionFailedConnecting(new Exception(
                            inErrorMessage));
    }
}
@Override
public void onPresenceChanged(Device arg0, PresenceEvent arg1) {

}
@Override
public void onStartListening(Device arg0) {
    if (basicDeviceListener != null) {
        basicDeviceListener.onDeviceStartedListening();
    }
}
@Override
public void onStopListening(Device arg0) {
    if (basicDeviceListener != null) {
        basicDeviceListener.onDeviceStoppedListening(null);
    }
}
@Override
public void onStopListening(Device arg0, int arg1, String arg2) {

}
@Override
public boolean receivePresenceEvents(Device arg0) {
    return false;
}
}
公共类MonkeyPhone实现了Twilio.InitListener、DeviceListener、,
连接侦听器{
私有静态最终字符串标记=“MonkeyPhone”;
专用设备;
专用连接;
私人最终语境;
private BasicConnectionListener BasicConnectionListener;
私有基本设备列表器基本设备列表器;
私有连接挂起连接;
输入方法管理器imm;
专用布尔扬声器;
启用私有布尔互斥;
静态字符串能力;
公共静态最终字符串帐户\u SID=“XXXXXXXXXXXXXXXXXXXXXX”;
公共静态最终字符串AUTH_TOKEN=“xxxxxxxxxxxxxxxxxxxxxxxx”;
公共接口基本连接侦听器{
未连接的公共无效断开连接();
public void onConnectionConnecting();
public void onConnectionConnected();
连接失败连接时的公共无效(异常错误);
连接断开()上的公共无效;
public void onConnectionDisconnected();
public void onconnection失败(异常错误);
}
公共接口基本设备列表器{
DeviceStartedListening()上的公共无效;
公共无效onDeviceStoppedListening(异常错误);
}
公用MonkeyPhone(上下文){
this.context=上下文;
初始化(上下文,this/*Twilio.InitListener*/);
}
public void setListener(BasicConnectionListener BasicConnectionListener,
基本设备列表器(基本设备列表器){
this.basicConnectionListener=basicConnectionListener;
this.basicDeviceListener=basicDeviceListener;
}
/*Twilio.InitListener方法*/
@凌驾
首次公开无效(){
Log.d(标记“Twilio SDK已准备就绪”);
试一试{
//弦能力=
//HttpHelper.httpGet(“http://------/mobile/auth.php");
//capabilityToken=HttpHelper.httpGet(“http:------/auth.php”);
capabilityToken=HttpHelper
.httpGet(“http://www.companyfoo.com/XXXXXXXXXXXXXXXXXXXXXXX");
系统输出打印LN(capabilityToken);
设备=Twilio
.createDevice(capabilityToken,null/*DeviceListener*/);
}捕获(例外e){
Log.e(标签,
“无法获取功能令牌:”
+e.getLocalizedMessage());
}
}
/*Twilio.InitListener方法*/
@凌驾
公共无效申报人(例外e){
Log.e(标记“TwilioSDK无法启动:”+e.getLocalizedMessage());
}
@凌驾
受保护的void finalize(){
如果(设备!=null)
装置。释放();
if(连接!=null)
连接断开();
}
//打电话
公共无效连接(字符串电话号码){
Toast Toast=Toast.makeText(上下文,“拨号…”,Toast.LENGTH\u LONG);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();
映射参数=新的HashMap();
参数.put(“PhoneNumber”,PhoneNumber);
connection=device.connect(参数,null/*ConnectionListener*/);
if(连接==null)
{
Log.w(标记“未能创建新连接”);
//TODO自动生成的方法存根
}
尝试
{
//能力训练=
//HttpHelper.httpGet(“http://------/mobile/auth.php");
//capabilityToken=HttpHelper
//.httpGet(“https://api.twilio.com/2010-04-     01/Accounts/xxxxxxxxxxxx/Calls.json);
//device=Twilio.createDevice(capabilityToken,null/*DeviceListener*/);
}捕获(异常e1){
e1.printStackTrace();
}
试一试{
设备。断开所有连接();
}捕获(例外e){
e、 printStackTrace();
}
}
//断开电话
公共空间断开连接(){
Toast Toast=Toast.makeText(上下文,“呼叫断开…”,
烤面包片(长/短);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();
if(连接!=null){
连接断开();
连接=空;
if(basicConnectionListener!=null)
basicConnectionListener.onConnectionDisconnecting();
}
}
public void设置带扬声器(布尔扬声器带扬声器){
if(speakerEnabled!=这个.speakerEnabled){
this.speakernabled=speakernabled;
updateAudioRoute();
}
}
私有void updateAudioRoute(){
AudioManager AudioManager=(AudioManager)上下文
.getSystemService(Context.AUDIO_服务);
音频管理器。设置扬声器(带扬声器);
}
public void setMuteEnabled(布尔muteEnabled){
if(muteEnabled!=此.muteEnabled){
this.muteEnabled=muteEnabled;
updateAudioRouteForMute();
}
}
私有void updateAudioRouteForMute(){
AudioManager AudioManager=(AudioManager)上下文
.getSystemService(Context.AUDIO_服务);
audioManager.setMicrophoneMute(已启用静音);
}
公共国家地位(){
connection.getState();
statestatushere=connection.getState();
在此处返回状态;
}
@凌驾
未连接的公共空间(连接arg0){
updateAudioRoute();
updateAudioRouteForMute();
if(basicConnectionListener!=null){
basicConnectionListener.onConnectionConnected();
}
}
@凌驾
连接上的公共无效(连接arg0){
if(basicConnectionListener!=null){
basicConnectionListener.onConnectionConnection();
}
}
@凌驾
公共空间未连接(连接未连接){
if(inConnection==连接){
连接=空;
if(basicConnectionListener!=null)
basicConnectionListener.onConnectionDisconnected();
}else if(inConnection==PendingComingConnection){
PendingComingConnection=null;
如果
 <?php

 require_once('Services/Twilio/Capability.php');
// Your API credentials from Account Dashboard here
$accountSid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$authToken = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
$appSid = 'APzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';

 $capability = new Services_Twilio_Capability($accountSid, $authToken);
 // give this app permissions
 $capability->allowClientOutgoing($appSid);
 // generate token that lasts for 5 minutes
 $token = $capability->generateToken(300);

  ?>`
package com.twilio.example.hellomonkey;
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.media.AudioManager;
import android.util.Log;
import android.view.Gravity;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import com.twilio.client.Connection;
import com.twilio.client.Connection.State;
import com.twilio.client.ConnectionListener;
import com.twilio.client.Device;
import com.twilio.client.DeviceListener;
import com.twilio.client.PresenceEvent;
import com.twilio.client.Twilio;
public class MonkeyPhone implements Twilio.InitListener, DeviceListener, ConnectionListener {
private static final String TAG = "MonkeyPhone";
private Device device;
private Connection connection;
private final Context context;
private BasicConnectionListener basicConnectionListener;
private BasicDeviceListener basicDeviceListener;
private Connection pendingIncomingConnection;
InputMethodManager imm;
private boolean speakerEnabled;
private boolean muteEnabled;
static String capabilityToken;

public interface BasicConnectionListener {
    public void onIncomingConnectionDisconnected();

    public void onConnectionConnecting();

    public void onConnectionConnected();

    public void onConnectionFailedConnecting(Exception error);

    public void onConnectionDisconnecting();

    public void onConnectionDisconnected();

    public void onConnectionFailed(Exception error);
}

public interface BasicDeviceListener {
    public void onDeviceStartedListening();

    public void onDeviceStoppedListening(Exception error);
}

public MonkeyPhone(Context context) {
    this.context = context;
    Twilio.initialize(context, this /* Twilio.InitListener */);
}

public void setListeners(BasicConnectionListener basicConnectionListener, BasicDeviceListener basicDeviceListener) {
    this.basicConnectionListener = basicConnectionListener;
    this.basicDeviceListener = basicDeviceListener;
}

/* Twilio.InitListener method */
@Override
public void onInitialized() {
    Log.d(TAG, "Twilio SDK is ready");
    try {
        // String capabilityToken =
        // HttpHelper.httpGet("http://------/mobile/auth.php");
        capabilityToken = HttpHelper.httpGet("your php url which gives you token");

        device = Twilio.createDevice(capabilityToken, null /* DeviceListener */);
    } catch (Exception e) {
        Log.e(TAG, "Failed to obtain capability token: " + e.getLocalizedMessage());
    }
}

/* Twilio.InitListener method */
@Override
public void onError(Exception e) {
    Log.e(TAG, "Twilio SDK couldn't start: " + e.getLocalizedMessage());
}

@Override
protected void finalize() {
    if (device != null)
        device.release();
    if (connection != null)
        connection.disconnect();
}

// To Make Calls

public void connect(String phoneNumber) {
    Toast toast = Toast.makeText(context, "Dialing...", Toast.LENGTH_LONG);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();
    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("PhoneNumber", phoneNumber);
    //String capabilityToken;
    try {
        // capabilityToken =
        // HttpHelper.httpGet("http://------/mobile/auth.php");
        //capabilityToken = HttpHelper.httpGet("your php url which gives you token");

        //device = Twilio.createDevice(capabilityToken, null /* DeviceListener */);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    try {
        device.disconnectAll();
    } catch (Exception e) {
        e.printStackTrace();
    }
    connection = device.connect(parameters, null /* ConnectionListener */);
    if (connection == null) {
        Log.w(TAG, "Failed to create new connection");
    }
}

// To Disconnect Phone
public void disconnect() {
    Toast toast = Toast.makeText(context, "Call Disconnected...", Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();

    if (connection != null) {
        connection.disconnect();
        connection = null; // will null out in onDisconnected()

        if (basicConnectionListener != null)
            basicConnectionListener.onConnectionDisconnecting();
    }
}

public void setSpeakerEnabled(boolean speakerEnabled) {
    if (speakerEnabled != this.speakerEnabled) {
        this.speakerEnabled = speakerEnabled;
        updateAudioRoute();
    }
}

private void updateAudioRoute() {
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setSpeakerphoneOn(speakerEnabled);
}

public void setMuteEnabled(boolean muteEnabled) {
    if (muteEnabled != this.muteEnabled) {
        this.muteEnabled = muteEnabled;
        updateAudioRouteForMute();
    }
}

private void updateAudioRouteForMute() {
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMicrophoneMute(muteEnabled);
}

public State status() {
    connection.getState();
    State statusHere = connection.getState();
    return statusHere;
}

@Override
public void onConnected(Connection arg0) {
    updateAudioRoute();
    updateAudioRouteForMute();
    if (basicConnectionListener != null) {
        basicConnectionListener.onConnectionConnected();
    }
}

@Override
public void onConnecting(Connection arg0) {
    if (basicConnectionListener != null) {
        basicConnectionListener.onConnectionConnecting();
    }
}

@Override
public void onDisconnected(Connection inConnection) {
    if (inConnection == connection) {
        connection = null;
        if (basicConnectionListener != null)
            basicConnectionListener.onConnectionDisconnected();
    } else if (inConnection == pendingIncomingConnection) {
        pendingIncomingConnection = null;
        if (basicConnectionListener != null)
            basicConnectionListener.onIncomingConnectionDisconnected();
    }
}

@Override
public void onDisconnected(Connection inConnection, int arg1, String inErrorMessage) {
    if (inConnection == connection) {
        connection = null;
        if (basicConnectionListener != null)
            basicConnectionListener.onConnectionFailedConnecting(new Exception(inErrorMessage));
    }

}

@Override
public void onPresenceChanged(Device arg0, PresenceEvent arg1) {

}

@Override
public void onStartListening(Device arg0) {
    if (basicDeviceListener != null) {
        basicDeviceListener.onDeviceStartedListening();
    }
}

@Override
public void onStopListening(Device arg0) {
    if (basicDeviceListener != null) {
        basicDeviceListener.onDeviceStoppedListening(null);
    }
}

@Override
public void onStopListening(Device arg0, int arg1, String arg2) {

}

@Override
public boolean receivePresenceEvents(Device arg0) {
    return false;
}

}