Просмотр исходного кода

腕表增加服务器IP配置,修改通话问题,其他优化

weizhengliang 1 год назад
Родитель
Сommit
148a03ddf6
14 измененных файлов с 519 добавлено и 25 удалено
  1. 3 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/NewCallListActivity.kt
  2. 28 12
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt
  3. 3 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/WatchUserSettingActivity.java
  4. 56 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/adapter/NumAdapter.java
  5. 1 1
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt
  6. 2 2
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/ui/CallSingleActivity.java
  7. 1 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/ui/FragmentAudio.java
  8. 4 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/AsyncPlayer.java
  9. 20 1
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/RingPlayHelper.java
  10. 164 0
      android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/ServerConfigDialogHelper.java
  11. 17 0
      android_mobile/src/main/yd_watch_2/res/layout/digital_item.xml
  12. 189 0
      android_mobile/src/main/yd_watch_2/res/layout/server_config_dialog_lay.xml
  13. 5 9
      android_mobile/src/main/yd_watch_2/res/layout/user_setting_layout.xml
  14. 26 0
      android_mobile/src/main/yd_watch_2/res/layout/watch_activity_register.xml

+ 3 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/NewCallListActivity.kt

@@ -72,6 +72,9 @@ class NewCallListActivity : BaseToolActivity(), NewCallItemAdapter.CallClickList
         recyclerView.layoutManager = virtualLayoutManager
         recyclerView.adapter = delegateAdapter
 
+        //ring up
+        RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.ring_tone, true)
+
         adapter.setCallClick(this)
 
         if (Constants.supportCall) {

+ 28 - 12
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -152,11 +152,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         }*/
 
         requestPermissions()
-
-        tv_system_settings.setOnClickListener {
-            val intent = Intent(Settings.ACTION_SETTINGS)
-            startActivity(intent)
-        }
     }
 
     private fun permissionGranted() {
@@ -164,6 +159,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Log.i(TAG, "IMEI " + Util.getIMEI(this))
         Log.i(TAG, "mac " + Constants.mac)
         tv_feedback_device_info.text = Constants.imei
+        tv_server_ip.text = CommonUtils.getUrl(BaseApplication.appContext)
 
         //申请悬浮窗权限
         if (Build.VERSION.SDK_INT >= 23) {
@@ -258,12 +254,12 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             //JanusConstant.TURN_SERVER = data.turnServer
 
             //成功获取到数据后再启动keepService并连接tcp服务器
-            if (DaemonEnv.app == null && !Strings.isNullOrEmpty(Constants.tcpServer) && !WdKeepAliveService.instanceCreated) {
+            /*if (DaemonEnv.app == null && !Strings.isNullOrEmpty(Constants.tcpServer) && !WdKeepAliveService.instanceCreated) {
                 Log.d(TAG, "开始 WdKeepAliveService")
                 //保活守护进程
                 DaemonEnv.init(this)
                 DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
-            }
+            }*/
 
             presenter.getDeviceVO(Constants.imei)
         }
@@ -396,6 +392,12 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Constants.sipId = data.sipId
         Constants.deviceType = data.deviceType
 
+        if (DaemonEnv.app == null && !WdKeepAliveService.instanceCreated) {
+            DaemonEnv.init(this)
+            Log.d(TAG, "开始 WdKeepAliveService")
+            DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
+        }
+
         loadingDialog.dismiss()
         watch_activity_register_layout.visibility = View.GONE
         watch_activity_home_linyout.visibility = View.VISIBLE
@@ -576,6 +578,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         state_linlyout.setOnClickListener(this)
         other_linyout.setOnClickListener(this)
         channel_im_layout.setOnClickListener(this)
+
         tv_register_ok.setOnClickListener {
             Log.d(TAG, "注册完成")
             initTcp()
@@ -583,6 +586,19 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             //presenter.getDeviceVO(Constants.imei)
             countDownTimer.start()
         }
+
+        tv_system_settings.setOnClickListener {
+            val intent = Intent(Settings.ACTION_SETTINGS)
+            startActivity(intent)
+        }
+
+        tv_restart_app.setOnClickListener {
+            AppUtils.restartApp()
+        }
+
+        tv_config_server.setOnClickListener {
+            ServerConfigDialogHelper.showPasswordDialog(activity)
+        }
     }
 
     override fun enableHeadsetVoiceMsg(): Boolean {
@@ -591,19 +607,19 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
 
     fun initTcp() {
         if (!Strings.isNullOrEmpty(Constants.tcpServer)) {    //有网且得到了服务器IP
-            presenter.getTcpServerHost()
+            presenter.getServerInfo()
             return
         }
 
         var count = 30
-        Thread(Runnable {
+        Thread {
             while (isUnRegister && count > 0 && Strings.isNullOrEmpty(Constants.tcpServer)) {
                 //DaemonEnv.sendStopWorkBroadcast(this)
                 Log.i(TAG, "获取TCP服务器IP和端口")
-                presenter.getTcpServerHost()
+                presenter.getServerInfo()
 
                 try {
-                    Thread.sleep(5000)
+                    Thread.sleep(20000)
                 } catch (e: Exception) {
                 }
                 count--
@@ -614,7 +630,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                     showMessage("未能正确连接,请重试")
                 })
             }
-        }).start()
+        }.start()
     }
 
     fun initCountDownTimer() {

+ 3 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/activity/WatchUserSettingActivity.java

@@ -63,6 +63,9 @@ public class WatchUserSettingActivity extends Activity {
         callYes = findViewById(R.id.rb_call_yes);
         callNo = findViewById(R.id.rb_call_no);
 
+        TextView partNameView = findViewById(R.id.part_name);
+        partNameView.setText(Constants.Companion.getPartName());
+
         tvAppVersion.setText(CommonUtils.getAppVersionName(BaseApplication.appContext) + "_" + BuildConfig.BUILD_TIME);
         tvDeviceId.setText("" + Constants.Companion.getDeviceId());
         tvDeviceImei.setText(Constants.Companion.getImei());

+ 56 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/adapter/NumAdapter.java

@@ -0,0 +1,56 @@
+package com.wdkl.ncs.android.component.home.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.wdkl.ncs.android.component.home.R;
+
+public class NumAdapter extends BaseAdapter {
+    private String[] num;
+    private Context context;
+
+    public NumAdapter(String[] numbers, Context context) {
+        this.num = numbers;
+        this.context = context;
+    }
+
+
+    @Override
+    public int getCount() {
+        return num.length;
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return num[position];
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder viewHolder;
+        if (convertView == null) {
+            convertView = LayoutInflater.from(context).inflate(R.layout.digital_item, null);
+            viewHolder = new ViewHolder();
+            viewHolder.numTv = convertView.findViewById(R.id.tv_number);
+            convertView.setTag(viewHolder);
+        } else {
+            viewHolder = (ViewHolder) convertView.getTag();
+        }
+        viewHolder.numTv.setText(num[position]);
+
+        return convertView;
+    }
+
+    static class ViewHolder {
+        TextView numTv;
+    }
+}

+ 1 - 1
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -214,7 +214,7 @@ class WdKeepAliveService : AbsWorkService() {
                         RecordHelper.getInstance().stopCancelRecordByOther(true)
                         //停止媒体播放,比如正在播放留言
                         MediaPlayHelper.getInstance().stopMusic(true)
-                        RingPlayHelper.stopRingTone()
+                        //RingPlayHelper.stopRingTone()
                         Log.i(TAG, "来电:" + JSON.toJSONString(interactionVO))
 
                         //加入呼叫列表

+ 2 - 2
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/ui/CallSingleActivity.java

@@ -74,8 +74,8 @@ public class CallSingleActivity extends AppCompatActivity {
     private boolean isOutgoing;
     private BigInteger roomId;
     private Room room;
-    //private BigInteger localUserId = BigInteger.valueOf(Constants.Companion.getMemberId());
-    private BigInteger localUserId = BigInteger.valueOf(Integer.parseInt(Constants.Companion.getSipId()));
+    private BigInteger localUserId = BigInteger.valueOf(Constants.Companion.getMemberId());
+    //private BigInteger localUserId = BigInteger.valueOf(Integer.parseInt(Constants.Companion.getSipId()));
 
     boolean isAudioOnly = true;
     String showName;

+ 1 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/ui/FragmentAudio.java

@@ -18,6 +18,7 @@ import com.blankj.utilcode.util.BarUtils;
 import com.enation.javashop.utils.base.tool.CommonTool;
 import com.google.gson.Gson;
 import com.wdkl.ncs.android.component.home.R;
+import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig;
 import com.wdkl.ncs.android.component.home.util.MediaPlayHelper;
 import com.wdkl.ncs.android.component.home.util.RingPlayHelper;
 import com.wdkl.ncs.android.lib.utils.ExtendMethodsKt;

+ 4 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/AsyncPlayer.java

@@ -138,6 +138,10 @@ public class AsyncPlayer {
         }
     }
 
+    public boolean isPlay() {
+        return mState == PLAY;
+    }
+
     private void enqueueLocked(Command cmd) {
         mCmdQueue.add(cmd);
         if (mThread == null) {

+ 20 - 1
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/RingPlayHelper.java

@@ -2,19 +2,38 @@ package com.wdkl.ncs.android.component.home.util;
 
 import android.content.Context;
 import android.media.AudioManager;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
 
 public class RingPlayHelper {
 
     private static AsyncPlayer ringPlayer;
+    private final static Handler handler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+            if (ringPlayer != null) {
+                ringPlayer.stop();
+            }
+        }
+    };
 
     public static void playRingTone(Context context, int res, boolean loop) {
         if (ringPlayer == null) {
             ringPlayer = new AsyncPlayer(null);
         }
-        ringPlayer.play(context, res, loop, AudioManager.STREAM_MUSIC);
+
+        if (!ringPlayer.isPlay()) {
+            ringPlayer.play(context, res, loop, AudioManager.STREAM_MUSIC);
+            handler.removeCallbacksAndMessages(null);
+            //if (loop) {
+                handler.sendEmptyMessageDelayed(10, 30000);
+            //}
+        }
     }
 
     public static void stopRingTone() {
+        handler.removeCallbacksAndMessages(null);
         if (ringPlayer != null) {
             ringPlayer.stop();
         }

+ 164 - 0
android_mobile/src/main/yd_watch_2/code/com/wdkl/ncs/android/component/home/util/ServerConfigDialogHelper.java

@@ -0,0 +1,164 @@
+package com.wdkl.ncs.android.component.home.util;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.EditText;
+import android.widget.GridView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.wdkl.ncs.android.component.home.R;
+import com.wdkl.ncs.android.component.home.adapter.NumAdapter;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
+import com.wdkl.ncs.android.lib.utils.ExtendMethodsKt;
+import com.wdkl.ncs.android.middleware.utils.CommonUtils;
+
+
+public class ServerConfigDialogHelper {
+
+    private static AlertDialog dialog;
+    private static String pwd = "";
+
+    public static void showPasswordDialog(final Activity activity) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.server_config_dialog_lay, null);
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setView(contentView);
+
+        final String[] numbers = {"1","2","3","4","5","6","7","8","9"};
+        final TextView password = contentView.findViewById(R.id.tv_psw_view);
+        final LinearLayout llPwd = contentView.findViewById(R.id.ll_password);
+        final LinearLayout llServer = contentView.findViewById(R.id.ll_server_config);
+        GridView gridView = contentView.findViewById(R.id.grid_psw);
+        NumAdapter adapter = new NumAdapter(numbers, activity);
+        gridView.setAdapter(adapter);
+        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                if (pwd.length() <= 2) {
+                    pwd = pwd + numbers[position];
+                    password.setText(pwd);
+                }
+                Log.d("serverIp", "input password len: " + pwd.length() + "--" + pwd);
+            }
+        });
+
+        TextView delete = contentView.findViewById(R.id.btn_delete);
+        TextView cancel = contentView.findViewById(R.id.btn_cancel);
+        TextView confirm = contentView.findViewById(R.id.btn_confirm);
+        delete.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d("serverIp", "delete password len: " + pwd.length() + "--" + pwd);
+                if (pwd.length() > 1) {
+                    pwd = pwd.substring(0, pwd.length()-1);
+                    password.setText(pwd);
+                } else {
+                    pwd = "";
+                    password.setText(pwd);
+                    password.setHint(R.string.input_password);
+                }
+            }
+        });
+
+        cancel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismissCallDialog();
+            }
+        });
+
+        confirm.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if ("666".equals(pwd)) {
+                    llPwd.setVisibility(View.GONE);
+                    llServer.setVisibility(View.VISIBLE);
+                } else {
+                    Toast.makeText(activity, R.string.invalid_password, Toast.LENGTH_SHORT).show();
+                }
+            }
+        });
+
+        final EditText editUrl = contentView.findViewById(R.id.edit_url);
+        final EditText editPort = contentView.findViewById(R.id.edit_port);
+        final EditText editSipUrl = contentView.findViewById(R.id.edit_sip_url);
+        final EditText editSipPort = contentView.findViewById(R.id.edit_sip_port);
+        TextView saveConfig = contentView.findViewById(R.id.btn_save_config);
+        TextView cancelConfig = contentView.findViewById(R.id.btn_cancel_config);
+        editUrl.setText(CommonUtils.getUrl(BaseApplication.appContext));
+        editPort.setText(CommonUtils.getUrlPort(BaseApplication.appContext));
+        //editSipUrl.setText(CommonUtils.getSipUrl(BaseApplication.appContext));
+        //editSipPort.setText(CommonUtils.getSipPort(BaseApplication.appContext));
+        saveConfig.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String url = editUrl.getText().toString();
+                String port = editPort.getText().toString();
+                if (TextUtils.isEmpty(url) || TextUtils.isEmpty(port)) {
+                    ExtendMethodsKt.showMessage(R.string.input_empty);
+                } else {
+                    //保存配置
+                    CommonUtils.setUrl(BaseApplication.appContext, url);
+                    CommonUtils.setUrlPort(BaseApplication.appContext, port);
+                    //CommonUtils.setSipUrl(BaseApplication.appContext, editSipUrl.getText().toString());
+                    //CommonUtils.setSipPort(BaseApplication.appContext, editSipPort.getText().toString());
+                    dismissCallDialog();
+                }
+            }
+        });
+        cancelConfig.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismissCallDialog();
+            }
+        });
+
+
+        dialog = builder.create();
+        //dialog.setCanceledOnTouchOutside(false);
+        //dialog.setCancelable(false);
+        dialog.show();
+
+        //设置dialog宽高及位置
+        try {
+            Window window = dialog.getWindow();
+            window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+            WindowManager.LayoutParams lp = window.getAttributes();
+            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            lp.gravity = Gravity.CENTER;
+            window.setAttributes(lp);
+
+            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
+            window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void dismissCallDialog() {
+        pwd = "";
+        if (dialog != null) {
+            dialog.dismiss();
+            dialog = null;
+        }
+    }
+}

+ 17 - 0
android_mobile/src/main/yd_watch_2/res/layout/digital_item.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/tv_number"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/color_gray"
+        android:layout_margin="4dp"
+        android:padding="4dp"
+        android:gravity="center"
+        android:textSize="16sp"
+        android:textColor="@color/main_color"/>
+
+</LinearLayout>

+ 189 - 0
android_mobile/src/main/yd_watch_2/res/layout/server_config_dialog_lay.xml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="10dp">
+
+    <!--密码框-->
+    <LinearLayout
+        android:id="@+id/ll_password"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/tv_psw_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:textSize="16sp"
+            android:hint="@string/input_password"
+            android:textColor="@color/main_color"/>
+
+        <GridView
+            android:id="@+id/grid_psw"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:verticalSpacing="5dp"
+            android:horizontalSpacing="5dp"
+            android:numColumns="3"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:orientation="horizontal">
+            <TextView
+                android:id="@+id/btn_delete"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="4dp"
+                android:gravity="center_horizontal"
+                android:text="@string/str_delete"
+                android:textSize="16sp"
+                android:textColor="@color/main_color"/>
+
+            <TextView
+                android:id="@+id/btn_cancel"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="4dp"
+                android:gravity="center_horizontal"
+                android:text="@string/str_cancel"
+                android:textSize="16sp"
+                android:textColor="@color/main_color"/>
+            <TextView
+                android:id="@+id/btn_confirm"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="4dp"
+                android:gravity="center_horizontal"
+                android:text="@string/str_confirm"
+                android:textSize="16sp"
+                android:textColor="@color/main_color"/>
+        </LinearLayout>
+    </LinearLayout>
+
+
+    <!--服务器ip配置-->
+    <LinearLayout
+        android:id="@+id/ll_server_config"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="Server IP:"
+                android:textSize="12sp"
+                android:textColor="@color/main_color"/>
+
+            <EditText
+                android:id="@+id/edit_url"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="textUri"
+                android:textSize="12sp"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="Port:"
+                android:textSize="12sp"
+                android:textColor="@color/main_color"/>
+
+            <EditText
+                android:id="@+id/edit_port"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="number"
+                android:textSize="12sp"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:visibility="gone">
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="Sip IP:"
+                android:textSize="12sp"
+                android:textColor="@color/main_color"/>
+
+            <EditText
+                android:id="@+id/edit_sip_url"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="textUri"
+                android:textSize="12sp"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:visibility="gone">
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="Sip port:"
+                android:textSize="12sp"
+                android:textColor="@color/main_color"/>
+
+            <EditText
+                android:id="@+id/edit_sip_port"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="number"
+                android:textSize="12sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp">
+            <TextView
+                android:id="@+id/btn_cancel_config"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/str_cancel"
+                android:textSize="16sp"
+                android:textColor="@color/black"/>
+
+            <TextView
+                android:id="@+id/btn_save_config"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/str_save"
+                android:textSize="16sp"
+                android:textColor="@color/black" />
+        </LinearLayout>
+    </LinearLayout>
+</RelativeLayout>

+ 5 - 9
android_mobile/src/main/yd_watch_2/res/layout/user_setting_layout.xml

@@ -12,17 +12,13 @@
             android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <LinearLayout
+            <TextView
+                android:id="@+id/part_name"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:layout_marginTop="15dp"
-                android:gravity="center_horizontal">
-                <ImageView
-                    android:src="@mipmap/launcher"
-                    android:layout_width="40dp"
-                    android:layout_height="40dp"/>
-            </LinearLayout>
+                android:padding="4dp"
+                android:gravity="center"
+                android:textSize="20sp"/>
 
             <LinearLayout
                 android:layout_width="match_parent"

+ 26 - 0
android_mobile/src/main/yd_watch_2/res/layout/watch_activity_register.xml

@@ -91,6 +91,32 @@
                 android:gravity="center"
                 android:text="系统设置"
                 android:textSize="18sp" />
+
+            <TextView
+                android:id="@+id/tv_restart_app"
+                android:layout_width="match_parent"
+                android:layout_height="40dp"
+                android:layout_marginLeft="30dp"
+                android:layout_marginTop="20dp"
+                android:layout_marginRight="30dp"
+                android:layout_marginBottom="20dp"
+                android:background="#ffffff"
+                android:gravity="center"
+                android:text="@string/register_restart"
+                android:textSize="18sp" />
+
+            <TextView
+                android:id="@+id/tv_config_server"
+                android:layout_width="match_parent"
+                android:layout_height="40dp"
+                android:layout_marginLeft="30dp"
+                android:layout_marginTop="20dp"
+                android:layout_marginRight="30dp"
+                android:layout_marginBottom="20dp"
+                android:background="#ffffff"
+                android:gravity="center"
+                android:text="@string/register_config_server"
+                android:textSize="18sp" />
         </LinearLayout>
     </ScrollView>
 </LinearLayout>