- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个与现有拨号器(Marshmallow API) Hook 的应用程序。我的目标是接听来电和拨出电话,同时处理 Connection对象来操作 Connection 的方法。
我已向 CAPABILITY_CALL_PROVIDER
注册了 PhoneAccount
。
PhoneAccount.Builder builder = new PhoneAccount.Builder(phoneAccountHandle, "CustomAccount");
builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER);
PhoneAccount phoneAccount = builder.build();
telecomManager.registerPhoneAccount(phoneAccount);
我的帐户在股票拨号器应用程序中可见(设置 -> 通话 -> 通话帐户),并且我已启用它。
我有一个监视电话状态的服务,并在 CALL_STATE_RINGING
上调用 TelecomManager 的 addNewIncomingCall()
方法。
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
Toast.makeText(getApplicationContext(), "Phone Is Ringing",
Toast.LENGTH_SHORT).show();
Bundle extras = new Bundle();
Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, incomingNumber, null);
extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, uri);
extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
telecomManager.addNewIncomingCall(phoneAccountHandle, extras);
}
if (state == TelephonyManager.CALL_STATE_OFFHOOK) {.......}
...
}
我的定制Connection Service :
@Override
public Connection onCreateIncomingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
Toast.makeText(getApplicationContext(), "onCreateIncomingConnection called", Toast.LENGTH_SHORT).show();
Connection incomingCallCannection = createConnection(request);
incomingCallCannection.setRinging();
return incomingCallCannection;
}
@Override
public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
Toast.makeText(getApplicationContext(), "onCreateOutgoingConnection called", Toast.LENGTH_SHORT).show();
Connection outgoingCallConnection = createConnection(request);
outgoingCallConnection.setDialing();
return outgoingCallConnection;
}
private Connection createConnection(ConnectionRequest request) {
mConnection = new Connection() {
@Override
public void onStateChanged(int state) {
super.onStateChanged(state);
}
@Override
public void onDisconnect() {
super.onDisconnect();
mConnection.setDisconnected(new DisconnectCause(DisconnectCause.CANCELED));
mConnectionsAvailableForConference.clear();
mConnection.destroy();
}
@Override
public void onSeparate() {
super.onSeparate();
}
@Override
public void onAbort() {
super.onAbort();
mConnection.setDisconnected(new DisconnectCause(DisconnectCause.CANCELED));
mConnection.destroy();
}
@Override
public void onHold() {
super.onHold();
}
@Override
public void onAnswer() {
super.onAnswer();
mConnection.setActive();
}
@Override
public void onReject() {
super.onReject();
mConnection.setDisconnected(new DisconnectCause(DisconnectCause.CANCELED));
mConnection.destroy();
}
};
mConnection.setAddress(request.getAddress(), TelecomManager.PRESENTATION_ALLOWED);
mConnection.setExtras(request.getExtras());
return mConnection;
}
现在,ConnectionService 的回调方法将分别在传入和传出调用时调用。问题是,当我转到拨号器并调用电话(使用我的 PhoneAccount
)时,我会看到拨号屏幕(inCallUI?),并显示正确的调用者信息(联系人姓名、电话号码)等..),但线路没有在我的耳机中响铃,并且调用未建立(应该接收调用的电话号码没有响铃)。
我尝试在回调中返回 super.onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)
而不是创建自己的 Connection 对象,并且得到了相同的行为。
TLDR:我的应用程序与拨号器通信,能够调用电话并显示拨号屏幕,但电话线没有响铃,也没有任何反应。
最佳答案
我已经研究这个问题好几天了,寻找解决方案。但在重新查看文档后,它明确指出,使用自定义 PhoneAccount 调用电话不会使用手机 sim 服务来调用电话,而是由应用程序自行处理所有通话操作.
CAPABILITY_CALL_PROVIDER: Flag indicating that this PhoneAccount can make phone calls in place of traditional SIM-based telephony calls.
如果您需要在拨出调用期间传输数据,您可以使用 bundle 将信息发送到默认调用应用程序。
您可以在此处阅读有关文档的更多信息。 https://developer.android.com/reference/android/telecom/PhoneAccount https://developer.android.com/guide/topics/connectivity/telecom/selfManaged#outgoing
关于android - 使用自定义 ConnectionService 和 PhoneAccount 时拨出电话不会响铃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44500945/
目前我正在处理一项任务,我必须在应用程序中将 iPhone 静音/响铃。我找到了 a link !但是开发人员说 Apple 禁止在您的应用程序中使用此库,他们拒绝了您的应用程序。那么这些应用程序是如
编译准备好后,如何使 sbt 响铃(或播放声音,或执行某些系统命令、shell 命令)? 编译通常需要40秒或更长时间,所以我想在等待时小睡一下,100个编译已经是一个小时的 sleep 。 最佳答案
我是一名优秀的程序员,十分优秀!