繁体   English   中英

我用两个按钮创建了自定义来电屏幕。 如何让按钮接听和结束通话?

[英]I created my custom incoming call screen with two buttons. How to i make the buttons answer and end a call?

我创建了一个自定义来电屏幕,在来电时被呼叫,但我如何处理在我的自定义屏幕中接听和结束通话的操作?

旁注:总是 go 通过开发人员文档,他们大部分时间都会为您提供答案。 就连这个

首先,您需要获得拨打和接听此类电话的权限,

允许:

<manifest … >
    <uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
</manifest>

然后你需要声明一个服务:

<service android:name="com.example.MyConnectionService"
    android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
    <intent-filter>
        <action android:name="android.telecom.ConnectionService" />
    </intent-filter>
</service>

然后按照以下步骤操作:

完整指南在这里构建一个呼叫应用程序

您的调用应用程序必须提供电信子系统可以绑定到的 ConnectionService class 的实现。 您的 ConnectionService 实现应覆盖以下方法:

onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest) 电信子系统调用此方法以响应您的应用调用 placeCall(Uri, Bundle) 以创建新的拨出呼叫。 您的应用返回 Connection class 实现的一个新实例(有关更多信息,请参阅实现连接)以表示新的拨出电话。 您可以通过执行以下操作进一步自定义传出连接:

您的应用程序应使用 PROPERTY_SELF_MANAGED 常量作为参数调用 setConnectionProperties(int) 方法,以指示连接源自调用应用程序。 如果您的应用程序支持暂停呼叫,请调用 setConnectionCapabilities(int) 方法并将参数设置为 CAPABILITY_HOLD 和 CAPABILITY_SUPPORT_HOLD 常量的位掩码值。 要设置呼叫者的姓名,请使用 setCallerDisplayName(String, int) 方法将 PRESENTATION_ALLOWED 常量作为 int 参数传递,以指示应显示呼叫者的姓名。 为确保呼出有合适的视频 state,调用Connection object的setVideoState(int)方法,发送ConnectionRequest object的getVideoState()方法返回的值。 onCreateOutgoingConnectionFailed(PhoneAccountHandle, ConnectionRequest) 电信子系统调用这个当您的应用程序调用 placeCall(Uri, Bundle) 方法并且无法拨出电话时。 针对这种情况,您的应用程序应通知用户(例如,使用警告框或 toast)无法拨出电话。 如果有正在进行的紧急呼叫,或者如果另一个应用程序中有一个正在进行的呼叫在您拨打电话之前无法暂停,则您的应用程序可能无法拨打电话。

onCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest) 当您的应用程序调用 addNewIncomingCall(PhoneAccountHandle, Bundle) 方法通知系统您的应用程序中有新来电时,电信子系统会调用此方法。 您的应用返回 Connection 实现的一个新实例(有关更多信息,请参阅实现连接)以表示新的来电。 您可以通过执行以下操作进一步自定义传入连接:

您的应用程序应使用 PROPERTY_SELF_MANAGED 常量作为参数调用 setConnectionProperties(int) 方法,以指示连接源自调用应用程序。 如果您的应用程序支持暂停呼叫,请调用 setConnectionCapabilities(int) 方法并将参数设置为 CAPABILITY_HOLD 和 CAPABILITY_SUPPORT_HOLD 常量的位掩码值。 要设置呼叫者的姓名,请使用 setCallerDisplayName(String, int) 方法将 PRESENTATION_ALLOWED 常量作为 int 参数传递,以指示应显示呼叫者的姓名。 要指定来电的电话号码或地址,请使用Connection object的setAddress(Uri, int)方法。要确保去电具有适当的视频state,请调用Connection object的setVideoState(int)方法和发送 ConnectionRequest 的 getVideoState() 方法返回的值 object. onCreateIncomingConnectionFailed(PhoneAccountHandle, ConnectionRequest) 当您的应用程序调用 addNewIncomingCall(PhoneAccountHandle, Bundle) 方法通知电信有新来电时,电信子系统会调用此方法,但是不允许来电(有关更多信息,请参阅呼叫限制)。 您的应用程序应以静默方式拒绝来电,可选择发布通知以通知用户未接来电。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM