添加语音播报
This commit is contained in:
@@ -34,7 +34,11 @@
|
|||||||
<uses-feature
|
<uses-feature
|
||||||
android:name="android.hardware.camera"
|
android:name="android.hardware.camera"
|
||||||
android:required="true" />
|
android:required="true" />
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.TTS_SERVICE" />
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
<application
|
<application
|
||||||
android:name=".api.UserApplication"
|
android:name=".api.UserApplication"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ import com.navinfo.outdoor.http.HttpInterface;
|
|||||||
import com.navinfo.outdoor.http.OkGoBuilder;
|
import com.navinfo.outdoor.http.OkGoBuilder;
|
||||||
import com.navinfo.outdoor.util.Base64;
|
import com.navinfo.outdoor.util.Base64;
|
||||||
import com.navinfo.outdoor.util.Md5Util;
|
import com.navinfo.outdoor.util.Md5Util;
|
||||||
|
import com.navinfo.outdoor.util.SpeakMode;
|
||||||
|
import com.navinfo.outdoor.util.SystemTTS;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
@@ -113,6 +115,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
|||||||
etLoginPaw.setText(pass_word);
|
etLoginPaw.setText(pass_word);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -144,7 +147,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!cbStatement.isChecked()){
|
if (!cbStatement.isChecked()){
|
||||||
Toast.makeText(this, "请先同意免责声明", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "请先同意用户协议", Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}else {
|
}else {
|
||||||
initLogIn(name, paw);
|
initLogIn(name, paw);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import com.navinfo.outdoor.room.PoiEntity;
|
|||||||
import com.navinfo.outdoor.util.AWMp4ParserHelper;
|
import com.navinfo.outdoor.util.AWMp4ParserHelper;
|
||||||
import com.navinfo.outdoor.util.GeometryTools;
|
import com.navinfo.outdoor.util.GeometryTools;
|
||||||
import com.navinfo.outdoor.util.MyTecentLocationSource;
|
import com.navinfo.outdoor.util.MyTecentLocationSource;
|
||||||
|
import com.navinfo.outdoor.util.SystemTTS;
|
||||||
import com.otaliastudios.cameraview.CameraListener;
|
import com.otaliastudios.cameraview.CameraListener;
|
||||||
import com.otaliastudios.cameraview.CameraLogger;
|
import com.otaliastudios.cameraview.CameraLogger;
|
||||||
import com.otaliastudios.cameraview.CameraView;
|
import com.otaliastudios.cameraview.CameraView;
|
||||||
@@ -82,7 +83,10 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (v.getId() == R.id.capture_picture) {
|
if (v.getId() == R.id.capture_picture) {
|
||||||
|
SystemTTS.getInstance(PhotographActivity.this).playText("11aa");
|
||||||
|
|
||||||
cameraView.takePicture();
|
cameraView.takePicture();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,6 +130,7 @@ public class PhotographActivity extends BaseActivity implements View.OnClickList
|
|||||||
assert file != null;
|
assert file != null;
|
||||||
intent.putExtra("file",file.getPath());
|
intent.putExtra("file",file.getPath());
|
||||||
setResult(0x104,intent);
|
setResult(0x104,intent);
|
||||||
|
SystemTTS.getInstance(PhotographActivity.this).stopSpeak();
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -493,6 +493,8 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen
|
|||||||
tencentMap.getCameraPosition().zoom, //目标缩放级别
|
tencentMap.getCameraPosition().zoom, //目标缩放级别
|
||||||
0, //目标倾斜角
|
0, //目标倾斜角
|
||||||
tencentLocation.getBearing())); //目标旋转角 0~360° (正北方为0)
|
tencentLocation.getBearing())); //目标旋转角 0~360° (正北方为0)
|
||||||
|
float speed = tencentLocation.getSpeed();
|
||||||
|
Log.d("TAG", "onEventMessageMainThread: "+speed);
|
||||||
tencentMap.animateCamera(cameraSigma);
|
tencentMap.animateCamera(cameraSigma);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,12 +226,7 @@ public class UserActivity extends BaseActivity implements View.OnClickListener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
MessageDialog.show(UserActivity.this, "提示","是否保存", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
|
Toast.makeText(UserActivity.this, response.getMessage()+"", Toast.LENGTH_SHORT).show();
|
||||||
@Override
|
|
||||||
public boolean onClick(BaseDialog baseDialog, View v) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.lzy.okgo.cookie.CookieJarImpl;
|
|||||||
import com.lzy.okgo.cookie.store.DBCookieStore;
|
import com.lzy.okgo.cookie.store.DBCookieStore;
|
||||||
import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
|
import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
|
||||||
import com.lzy.okgo.model.HttpHeaders;
|
import com.lzy.okgo.model.HttpHeaders;
|
||||||
|
import com.navinfo.outdoor.util.SystemTTS;
|
||||||
import com.navinfo.outdoor.util.TalentLocationUtils;
|
import com.navinfo.outdoor.util.TalentLocationUtils;
|
||||||
import com.umeng.commonsdk.UMConfigure;
|
import com.umeng.commonsdk.UMConfigure;
|
||||||
import com.umeng.umcrash.UMCrash;
|
import com.umeng.umcrash.UMCrash;
|
||||||
@@ -41,7 +42,6 @@ public class UserApplication extends Application {
|
|||||||
|
|
||||||
|
|
||||||
TalentLocationUtils.getInstance(this).startLocation(this);
|
TalentLocationUtils.getInstance(this).startLocation(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UserApplication getUserApplication() {
|
public static UserApplication getUserApplication() {
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
|
|||||||
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "不通过", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
|
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "不通过", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onClick(BaseDialog baseDialog, View v) {
|
public boolean onClick(BaseDialog baseDialog, View v) {
|
||||||
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -201,7 +201,6 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
|
|||||||
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "通过", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
|
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "通过", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onClick(BaseDialog baseDialog, View v) {
|
public boolean onClick(BaseDialog baseDialog, View v) {
|
||||||
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ public class RegisterFragment extends BaseFragment implements View.OnClickListen
|
|||||||
httpParams.put("sessionId", sessionId);
|
httpParams.put("sessionId", sessionId);
|
||||||
}
|
}
|
||||||
if (!ivRegisterCheck.isChecked()){
|
if (!ivRegisterCheck.isChecked()){
|
||||||
Toast.makeText(getActivity(), "请先同意免责声明", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getActivity(), "请先同意用户协议", Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
|
|||||||
@@ -434,8 +434,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
|||||||
Integer telLength = getPhoneBean.getBody().getTelLength();
|
Integer telLength = getPhoneBean.getBody().getTelLength();
|
||||||
Constant.CODE = code;
|
Constant.CODE = code;
|
||||||
Constant.TelLength = telLength;
|
Constant.TelLength = telLength;
|
||||||
} else {
|
|
||||||
Toast.makeText(getActivity(), getPhoneBean.getMessage() + "", Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,7 +479,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
|||||||
.url(HttpInterface.USER_LOCATION)
|
.url(HttpInterface.USER_LOCATION)
|
||||||
.cls(UserBean.class)
|
.cls(UserBean.class)
|
||||||
.params(httpParams)
|
.params(httpParams)
|
||||||
|
|
||||||
.token(Constant.ACCESS_TOKEN)
|
.token(Constant.ACCESS_TOKEN)
|
||||||
.postRequest(new Callback<UserBean>() {
|
.postRequest(new Callback<UserBean>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
141
app/src/main/java/com/navinfo/outdoor/util/SpeakMode.java
Normal file
141
app/src/main/java/com/navinfo/outdoor/util/SpeakMode.java
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
package com.navinfo.outdoor.util;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.speech.tts.TextToSpeech;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.kongzue.dialog.util.DialogSettings;
|
||||||
|
import com.kongzue.dialog.v3.MessageDialog;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
//语音类
|
||||||
|
public class SpeakMode extends Activity implements TextToSpeech.OnInitListener{
|
||||||
|
private Activity mActivity;
|
||||||
|
private TextToSpeech mTextToSpeech;//TTS对象
|
||||||
|
private int status;
|
||||||
|
private int MY_DATA_CHECK_CODE = 0;
|
||||||
|
|
||||||
|
private Handler mHandler = new Handler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
switch (msg.what) {
|
||||||
|
case 0x11:
|
||||||
|
try {
|
||||||
|
HashMap<String, String> params = new HashMap<String, String>();
|
||||||
|
|
||||||
|
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, "STREAM_NOTIFICATION");//设置播放类型(音频流类型)
|
||||||
|
|
||||||
|
mTextToSpeech.speak(msg.obj + "", TextToSpeech.QUEUE_ADD, params);//将这个发音任务添加当前任务之后
|
||||||
|
|
||||||
|
//BaseToast.makeText(mActivity,msg.obj+"",Toast.LENGTH_LONG).show();
|
||||||
|
|
||||||
|
mTextToSpeech.playSilence(100, TextToSpeech.QUEUE_ADD, params);//间隔多长时间
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public SpeakMode(Activity activity) {
|
||||||
|
|
||||||
|
mActivity = activity;
|
||||||
|
|
||||||
|
if (mActivity != null && !mActivity.isFinishing())
|
||||||
|
this.mTextToSpeech = new TextToSpeech(this.mActivity, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
Intent checkIntent = new Intent();
|
||||||
|
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
|
||||||
|
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(String json) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInit(int status) {
|
||||||
|
this.status = status;
|
||||||
|
if (this.mTextToSpeech != null) {
|
||||||
|
int result = this.mTextToSpeech.setLanguage(Locale.CHINESE);
|
||||||
|
if (result == TextToSpeech.LANG_MISSING_DATA
|
||||||
|
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
|
||||||
|
if (mActivity != null && !mActivity.isFinishing()) {
|
||||||
|
DialogSettings.style = DialogSettings.STYLE.STYLE_KONGZUE;
|
||||||
|
MessageDialog.show((AppCompatActivity) mActivity, "提示", "设备不支持语音播报。", "确定");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.i("TextToSpeechDemo", String.valueOf(status));
|
||||||
|
}
|
||||||
|
|
||||||
|
//读语音处理
|
||||||
|
public void speakText(final String message) {
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
if (mTextToSpeech != null) {
|
||||||
|
Set<Locale> availableLanguages = mTextToSpeech.getAvailableLanguages();
|
||||||
|
List<TextToSpeech.EngineInfo> engines = mTextToSpeech.getEngines();
|
||||||
|
|
||||||
|
int result = mTextToSpeech.setLanguage(Locale.CHINESE);
|
||||||
|
|
||||||
|
if (result == TextToSpeech.LANG_MISSING_DATA
|
||||||
|
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (mTextToSpeech != null && mTextToSpeech.isSpeaking()) {
|
||||||
|
while (mTextToSpeech.isSpeaking()) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Message msg = new Message();
|
||||||
|
msg.what = 0x11;
|
||||||
|
msg.obj = message;
|
||||||
|
mHandler.sendMessage(msg);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopSpeek() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (this.mTextToSpeech != null && this.mTextToSpeech.isSpeaking()) {
|
||||||
|
this.mTextToSpeech.stop();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
package com.navinfo.outdoor.util;
|
package com.navinfo.outdoor.util;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.speech.tts.TextToSpeech;
|
import android.speech.tts.TextToSpeech;
|
||||||
import android.speech.tts.UtteranceProgressListener;
|
import android.speech.tts.UtteranceProgressListener;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
public class SystemTTS extends UtteranceProgressListener implements TTS, TextToSpeech.OnUtteranceCompletedListener {
|
public class SystemTTS extends UtteranceProgressListener implements TTS, TextToSpeech.OnUtteranceCompletedListener {
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private static SystemTTS singleton;
|
private static SystemTTS singleton;
|
||||||
@@ -29,29 +33,29 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
|
|||||||
textToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
|
textToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onInit(int i) {
|
public void onInit(int i) {
|
||||||
//系统语音初始化成功
|
|
||||||
if (i == TextToSpeech.SUCCESS) {
|
|
||||||
int result = textToSpeech.setLanguage(Locale.CHINA);
|
|
||||||
textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
|
|
||||||
textToSpeech.setSpeechRate(1.0f);
|
|
||||||
textToSpeech.setOnUtteranceProgressListener(SystemTTS.this);
|
|
||||||
textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this);
|
|
||||||
if (result == TextToSpeech.LANG_MISSING_DATA
|
|
||||||
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
|
|
||||||
//系统不支持中文播报
|
|
||||||
isSuccess = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
//系统语音初始化成功
|
||||||
|
int result = textToSpeech.setLanguage(Locale.getDefault());
|
||||||
|
textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
|
||||||
|
textToSpeech.setSpeechRate(1.0f);
|
||||||
|
textToSpeech.setOnUtteranceProgressListener(SystemTTS.this);
|
||||||
|
textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this);
|
||||||
|
if (result == TextToSpeech.LANG_MISSING_DATA
|
||||||
|
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
|
||||||
|
//系统不支持中文播报
|
||||||
|
isSuccess = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playText(String playText) {
|
public void playText(String playText) {
|
||||||
if (!isSuccess) {
|
// if (!isSuccess) {
|
||||||
Toast.makeText(mContext, "系统不支持中文播报", Toast.LENGTH_SHORT).show();
|
// return;
|
||||||
return;
|
// }
|
||||||
}
|
Set<Locale> availableLanguages = textToSpeech.getAvailableLanguages();
|
||||||
|
List<TextToSpeech.EngineInfo> engines = textToSpeech.getEngines();
|
||||||
|
String defaultEngine = textToSpeech.getDefaultEngine();
|
||||||
if (textToSpeech != null) {
|
if (textToSpeech != null) {
|
||||||
textToSpeech.speak(playText,
|
textToSpeech.speak(playText,
|
||||||
TextToSpeech.QUEUE_ADD, null, null);
|
TextToSpeech.QUEUE_ADD, null, null);
|
||||||
@@ -64,18 +68,10 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public boolean isSpeaking() {
|
|
||||||
// if (textToSpeech.isSpeaking()) {
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
//播报完成回调
|
//播报完成回调
|
||||||
@Override
|
@Override
|
||||||
public void onUtteranceCompleted(String utteranceId) {
|
public void onUtteranceCompleted(String utteranceId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -91,5 +87,6 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
|
|||||||
public void onError(String utteranceId) {
|
public void onError(String utteranceId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ package com.navinfo.outdoor.util;
|
|||||||
|
|
||||||
public interface TTS {
|
public interface TTS {
|
||||||
void playText(String playText);
|
void playText(String playText);
|
||||||
void stopSpeak();
|
|
||||||
|
|
||||||
|
void stopSpeak();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,4 +176,5 @@
|
|||||||
android:layout_marginBottom="20dp"
|
android:layout_marginBottom="20dp"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -255,7 +255,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="2dp"
|
android:layout_marginLeft="2dp"
|
||||||
android:text="免责声明"
|
android:text="用户协议"
|
||||||
android:textColor="@color/colorWhite"
|
android:textColor="@color/colorWhite"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/iv_register_check"
|
app:layout_constraintBottom_toBottomOf="@id/iv_register_check"
|
||||||
app:layout_constraintLeft_toRightOf="@id/iv_register_check"
|
app:layout_constraintLeft_toRightOf="@id/iv_register_check"
|
||||||
|
|||||||
Reference in New Issue
Block a user