Php 如何在Android中集成Twilio
我正在尝试,我已经用Java完成了呼出呼叫部分,但出于某种原因。我在安卓系统上没有成功 我也为token创建了一个php Api,但该token并没有为我提供功能代码。此api位于我们的本地服务器(即本地主机)上 我也在提供我项目的源代码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
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;
}
}