日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pjsip视频通信开发(上层应用)之拨号界面整体界面功能实现

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pjsip视频通信开发(上层应用)之拨号界面整体界面功能实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面的幾章里面寫了顯示、鍵盤、撥號、刪除功能,這里我將他們進行組合,形成一個撥號鍵盤全部功能。首先是布局

?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".SipHome" ><RelativeLayoutandroid:id="@+id/topField"android:layout_width="fill_parent"android:layout_height="0dip"android:layout_marginBottom="0dip"android:layout_weight="@integer/dialpad_layout_weight_digits"android:background="@drawable/dialpad_background"android:orientation="horizontal"android:padding="0dip" ><com.jwzhangjie.pjsip.ui.dialpad.DigitsEditTextandroid:id="@+id/digitsText"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/transparent"android:contentDescription="@string/description_digits_edittext"android:gravity="center"android:imeActionLabel="@string/call"android:imeOptions="actionGo"android:nextFocusRight="@+id/accountChooserButton"android:textAppearance="@style/DialtactsDigitsTextAppearance"android:textColor="@android:color/white" /></RelativeLayout><include layout="@layout/dialpad_compose_3x5" /> </LinearLayout>


dialpad_compose_3x5:

?

?

<?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" ><com.jwzhangjie.pjsip.widgets.Dialpadandroid:id="@+id/dialPad"android:layout_width="match_parent"android:layout_height="0dip"android:layout_gravity="center_horizontal"android:layout_weight="@integer/dialpad_layout_weight_dialpad"android:background="@drawable/dialpad_background"android:paddingBottom="10dip"android:paddingLeft="5dip"android:paddingRight="5dip" /><Viewandroid:layout_width="match_parent"android:layout_height="@dimen/dialpad_vertical_margin"android:background="#66000000" /><com.jwzhangjie.pjsip.widgets.DialerCallBarandroid:id="@+id/dialerCallBar"android:layout_width="match_parent"android:layout_height="0dip"android:layout_gravity="center_horizontal"android:layout_weight="@integer/dialpad_layout_weight_additional_buttons"android:background="@drawable/dialpad_background"android:orientation="horizontal" /></merge>

代碼如下:

package com.jwzhangjie.pjsip.ui;import com.jwzhangjie.pjsip.R; import com.jwzhangjie.pjsip.ui.dialpad.DigitsEditText; import com.jwzhangjie.pjsip.widgets.DialerCallBar; import com.jwzhangjie.pjsip.widgets.DialerCallBar.OnDialActionListener; import com.jwzhangjie.pjsip.widgets.Dialpad; import com.jwzhangjie.pjsip.widgets.Dialpad.OnDialKeyListener;import android.os.Bundle; import android.text.Editable; import android.text.Selection; import android.text.TextWatcher; import android.text.method.DialerKeyListener; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.inputmethod.EditorInfo; import android.widget.ImageButton; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener;public class SipHome extends SipBase implements OnClickListener,OnLongClickListener, OnDialKeyListener, TextWatcher,OnDialActionListener {private DigitsEditText digits;//顯示數字private String initText = null;private Dialpad dialPad;//數字鍵盤private DialerCallBar callBar;//數字鍵盤下面的,視頻電話撥號,電話撥號,刪除撥號內容private final int[] buttonsToLongAttach = new int[] { R.id.button0,R.id.button1 };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sip_home);initCompontent();initListener();}private void initCompontent() {digits = (DigitsEditText) findViewById(R.id.digitsText);dialPad = (Dialpad) findViewById(R.id.dialPad);callBar = (DialerCallBar) findViewById(R.id.dialerCallBar);}private void initListener() {digits.setKeyListener(DialerKeyListener.getInstance());digits.addTextChangedListener(this);digits.setCursorVisible(false);dialPad.setOnDialKeyListener(this);digits.setOnEditorActionListener(keyboardActionListener);for (int buttonId : buttonsToLongAttach) {attachButtonListener(buttonId, true);}callBar.setOnDialActionListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.sip_home, menu);return true;}/*** Set the value of the text field and put caret at the end* @param value* the new text to see in the text field*/public void setTextFieldValue(CharSequence value) {if (digits == null) {initText = value.toString();return;}digits.setText(value);// make sure we keep the caret at the end of the text viewEditable spannable = digits.getText();Selection.setSelection(spannable, spannable.length());}/** 數字鍵盤的回調函數* * @see com.jwzhangjie.pjsip.widgets.Dialpad.OnDialKeyListener#onTrigger(int, int)*/@Overridepublic void onTrigger(int keyCode, int dialTone) {keyPressed(keyCode);}/*** 將鍵盤內容輸入到顯示框中* @param keyCode*/private void keyPressed(int keyCode) {KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);digits.onKeyDown(keyCode, event);}@Overridepublic boolean onLongClick(View v) {int vId = v.getId();if (vId == R.id.button0) {//刪除鍵盤按鍵的內容,長按一次性刪除keyPressed(KeyEvent.KEYCODE_PLUS);return true;} else if (vId == R.id.button1) {if (digits.length() == 0) {return true;}}return false;}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button0:break;case R.id.button1:digits.setText(null);break;}}private void attachButtonListener(int id, boolean longAttach) {ImageButton button = (ImageButton) findViewById(id);if (button == null) {return;}if (longAttach) {button.setOnLongClickListener(this);} else {button.setOnClickListener(this);}}private OnEditorActionListener keyboardActionListener = new OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView tv, int action, KeyEvent arg2) {if (action == EditorInfo.IME_ACTION_GO) {return true;}return false;}};@Overridepublic void afterTextChanged(Editable arg0) {}@Overridepublic void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}@Overridepublic void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {afterTextChanged(digits.getText());}/*** 不含視頻的通話*/@Overridepublic void placeCall() {}/*** 含有視頻的通話*/@Overridepublic void placeVideoCall() {}/*** 刪除一個字符*/@Overridepublic void deleteChar() {keyPressed(KeyEvent.KEYCODE_DEL);}/*** 刪除所有的字符*/@Overridepublic void deleteAll() {digits.getText().clear();}}


最終的顯示效果如下:

?


輸入內容的界面:


刪除內容的界面:



?

轉載于:https://www.cnblogs.com/pangblog/p/3395189.html

總結

以上是生活随笔為你收集整理的pjsip视频通信开发(上层应用)之拨号界面整体界面功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久一区二区三区 | 91成人短视频在线观看 | 国产在线一区视频 | 国产51视频| 欧美亚洲精品在线 | 欧美嘿咻视频 | 欧美性欧美zzzzzzzzz | 夜色网| 那个网站可以看毛片 | 五月婷婷在线播放 | www欧美视频 | 国产精品久久久精品三级 | 大奶子网站| 欧美日韩精品亚洲精品 | 人妻少妇无码精品视频区 | 性史性农村dvd毛片 日韩精品在线视频观看 | av先锋在线 | 手机在线一区 | 好看的国产精品 | www.超碰在线.com | 精品欧美一区二区三区免费观看 | 国产女主播在线播放 | 日日夜夜草 | 操女人免费视频 | 国产视频1 | 久久精品无码专区 | 美女久久久久久久久久 | 亚洲国产一区二区三区四区 | 六月婷婷av| 婷婷六月网 | 一级爱爱片 | 玩偶姐姐在线看 | 亚洲作爱 | 玖操 | 色吊丝中文字幕 | 国产精品亚洲二区 | 国产一区二区三区免费观看 | 久久久久久久偷拍 | 欧美三日本三级少妇三99 | av动漫天堂 | 国内黄色网址 | 精品国产户外野外 | 五月婷婷色综合 | 热精品 | 少妇又色又紧又爽又刺激视频 | 裸体视频软件 | 巨乳xxx | 欧美日韩亚洲国产另类 | 久久五月激情 | 自拍欧美日韩 | 国产日韩大片 | 中文字幕日韩高清 | 久久午夜伦理 | 特黄视频在线观看 | 亚欧美在线| 亚洲青春草 | 一区二区三区视频在线播放 | 毛茸茸毛片 | 经典三级av在线 | 999精品国产 | 免费的黄色一级片 | 午夜肉体高潮免费毛片 | 亚洲狼人社区 | 黄页嫩草 | 天堂网在线中文 | 91网页在线观看 | 飘花影院伦理片 | 国产情侣一区 | 亚洲成人一二区 | 91精品人妻一区二区三区蜜桃欧美 | 最新中文在线视频 | 爱情岛论坛亚洲自拍 | 国产农村妇女精品久久久 | av中文字幕第一页 | 免费视频污 | 亚洲精品久久久久国产 | 欧美特级黄 | 91捆绑91紧缚调教91 | 波多野结衣一区二区三区高清 | 欧洲一级片 | 欧美色图在线播放 | 美美女高清毛片视频免费观看 | 久久99精品视频 | 婷婷色基地 | 女人脱裤子让男人捅 | 日韩无码精品一区二区 | 亚色网站| 亚洲成人网av | 一本色道综合久久欧美日韩精品 | 精品午夜久久久 | 欧美国产在线视频 | 激情欧美一区二区三区精品 | 久久经典 | 五十路妻 | 人人干人人插 | 国产成人精品一区二区在线小狼 | 亚洲黄色影视 | 一女二男一黄一片 | 蜜色影院|