|
|
@ -102,6 +102,7 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
|
|
|
|
|
|
|
|
|
|
|
public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
NoteSettingChangedListener, OnTextViewChangeListener {// 类成员变量和方法,封装了便签编辑的相关功能
|
|
|
|
NoteSettingChangedListener, OnTextViewChangeListener {// 类成员变量和方法,封装了便签编辑的相关功能
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 头部视图的ViewHolder类,用于存储头部视图中的UI组件引用。
|
|
|
|
* 头部视图的ViewHolder类,用于存储头部视图中的UI组件引用。
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -199,6 +200,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
private Button mTranslateButton;
|
|
|
|
private Button mTranslateButton;
|
|
|
|
private String restore_translate;
|
|
|
|
private String restore_translate;
|
|
|
|
private EditText editable; // 定义为类的成员变量
|
|
|
|
private EditText editable; // 定义为类的成员变量
|
|
|
|
|
|
|
|
|
|
|
|
//@Override
|
|
|
|
//@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@ -244,8 +246,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private final int PHOTO_REQUEST = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final int PHOTO_REQUEST = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -668,7 +670,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
|
|
|
|
TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mFontSizeSelector.setVisibility(View.GONE); // 隐藏字体大小选择器
|
|
|
|
mFontSizeSelector.setVisibility(View.GONE); // 隐藏字体大小选择器
|
|
|
|
} if (id==R.id.move){
|
|
|
|
}
|
|
|
|
|
|
|
|
if (id == R.id.move) {
|
|
|
|
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
|
|
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
|
|
final View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
|
|
|
|
final View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
|
|
|
|
//编辑Text
|
|
|
|
//编辑Text
|
|
|
@ -1279,12 +1282,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据笔记内容生成快捷方式的标题。移除内容中的已选和未选标签,并确保标题长度不超过上限。
|
|
|
|
* 根据笔记内容生成快捷方式的标题。移除内容中的已选和未选标签,并确保标题长度不超过上限。
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -1322,8 +1319,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
* 修改部分如下
|
|
|
|
* 修改部分如下
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
//获取文件的real path
|
|
|
|
//获取文件的real path
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据Uri获取文件的真实路径
|
|
|
|
* 根据Uri获取文件的真实路径
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param context 上下文
|
|
|
|
* @param context 上下文
|
|
|
|
* @param uri 文件Uri
|
|
|
|
* @param uri 文件Uri
|
|
|
|
* @return 文件真实路径
|
|
|
|
* @return 文件真实路径
|
|
|
@ -1390,6 +1389,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取数据列,用于获取Uri对应文件的路径
|
|
|
|
* 获取数据列,用于获取Uri对应文件的路径
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param context 上下文
|
|
|
|
* @param context 上下文
|
|
|
|
* @param uri 文件Uri
|
|
|
|
* @param uri 文件Uri
|
|
|
|
* @param selection 查询条件
|
|
|
|
* @param selection 查询条件
|
|
|
@ -1421,7 +1421,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//是否为外部存储文件
|
|
|
|
//是否为外部存储文件
|
|
|
|
// public boolean isExternalStorageDocument(Uri uri) {
|
|
|
|
// public boolean isExternalStorageDocument(Uri uri) {
|
|
|
|
// return "com.android.externalstorage.documents".equals(uri.getAuthority());
|
|
|
|
// return "com.android.externalstorage.documents".equals(uri.getAuthority());
|
|
|
@ -1589,116 +1588,168 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 翻译功能
|
|
|
|
* 翻译功能
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
// 显示翻译对话框的方法
|
|
|
|
private void showTranslationDialog() {
|
|
|
|
private void showTranslationDialog() {
|
|
|
|
|
|
|
|
// 创建三个按钮,分别用于选择不同的翻译模式
|
|
|
|
Button trans1 = new Button(this);
|
|
|
|
Button trans1 = new Button(this);
|
|
|
|
Button trans2 = new Button(this);
|
|
|
|
Button trans2 = new Button(this);
|
|
|
|
Button trans3 = new Button(this);
|
|
|
|
Button trans3 = new Button(this);
|
|
|
|
|
|
|
|
// 设置按钮的文本
|
|
|
|
trans1.setText("中文翻译为英文");
|
|
|
|
trans1.setText("中文翻译为英文");
|
|
|
|
trans2.setText("英文翻译为中文");
|
|
|
|
trans2.setText("英文翻译为中文");
|
|
|
|
trans3.setText("还原");
|
|
|
|
trans3.setText("还原");
|
|
|
|
|
|
|
|
// 创建一个垂直方向的线性布局
|
|
|
|
LinearLayout linear = new LinearLayout(this);
|
|
|
|
LinearLayout linear = new LinearLayout(this);
|
|
|
|
linear.setOrientation(LinearLayout.VERTICAL);
|
|
|
|
linear.setOrientation(LinearLayout.VERTICAL);
|
|
|
|
|
|
|
|
// 将按钮添加到线性布局中
|
|
|
|
linear.addView(trans1);
|
|
|
|
linear.addView(trans1);
|
|
|
|
linear.addView(trans2);
|
|
|
|
linear.addView(trans2);
|
|
|
|
linear.addView(trans3);
|
|
|
|
linear.addView(trans3);
|
|
|
|
|
|
|
|
// 创建一个对话框构建器
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
|
|
|
|
|
|
// 将线性布局设置为对话框的内容视图
|
|
|
|
builder.setView(linear);
|
|
|
|
builder.setView(linear);
|
|
|
|
|
|
|
|
// 设置对话框的标题
|
|
|
|
builder.setTitle("请选择翻译模式");
|
|
|
|
builder.setTitle("请选择翻译模式");
|
|
|
|
|
|
|
|
// 创建并显示对话框
|
|
|
|
AlertDialog choose_trans = builder.create();
|
|
|
|
AlertDialog choose_trans = builder.create();
|
|
|
|
choose_trans.show();
|
|
|
|
choose_trans.show();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 为“中文翻译为英文”按钮设置点击事件监听器
|
|
|
|
trans1.setOnClickListener(new OnClickListener() {
|
|
|
|
trans1.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
|
|
|
// 调用中文翻译为英文的方法
|
|
|
|
translate_z2u();
|
|
|
|
translate_z2u();
|
|
|
|
|
|
|
|
// 弹出提示信息,告知用户正在进行中文翻译为英文的操作
|
|
|
|
Toast.makeText(NoteEditActivity.this, "中文翻译为英文", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "中文翻译为英文", Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 为“英文翻译为中文”按钮设置点击事件监听器
|
|
|
|
trans2.setOnClickListener(new OnClickListener() {
|
|
|
|
trans2.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
|
|
|
// 调用英文翻译为中文的方法
|
|
|
|
translate_u2z();
|
|
|
|
translate_u2z();
|
|
|
|
|
|
|
|
// 弹出提示信息,告知用户正在进行英文翻译为中文的操作
|
|
|
|
Toast.makeText(NoteEditActivity.this, "英文翻译为中文", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "英文翻译为中文", Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 为“还原”按钮设置点击事件监听器
|
|
|
|
trans3.setOnClickListener(new OnClickListener() {
|
|
|
|
trans3.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
|
|
|
// 判断是否有可还原的内容
|
|
|
|
if (restore_translate == null || restore_translate.equals(mNoteEditor.getText().toString())) {
|
|
|
|
if (restore_translate == null || restore_translate.equals(mNoteEditor.getText().toString())) {
|
|
|
|
|
|
|
|
// 如果无可还原内容,则弹出提示信息
|
|
|
|
Toast.makeText(NoteEditActivity.this, "无可还原内容", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "无可还原内容", Toast.LENGTH_SHORT).show();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 将编辑器的文本还原为之前保存的内容
|
|
|
|
mNoteEditor.setText(restore_translate);
|
|
|
|
mNoteEditor.setText(restore_translate);
|
|
|
|
|
|
|
|
// 弹出提示信息,告知用户已还原
|
|
|
|
Toast.makeText(NoteEditActivity.this, "已还原", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "已还原", Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 中文翻译为英文的方法
|
|
|
|
private void translate_z2u() {
|
|
|
|
private void translate_z2u() {
|
|
|
|
|
|
|
|
// 获取编辑器中的文本
|
|
|
|
String word = mNoteEditor.getText().toString();
|
|
|
|
String word = mNoteEditor.getText().toString();
|
|
|
|
|
|
|
|
// 将文本中的换行符替换为“//”,以便符合百度翻译API的要求
|
|
|
|
word = word.replaceAll("\\n", "//");
|
|
|
|
word = word.replaceAll("\\n", "//");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 百度翻译API的appid和密钥
|
|
|
|
String appid = "20250109002249097";
|
|
|
|
String appid = "20250109002249097";
|
|
|
|
String secretKey = "D_r9pemb6FKW6bYIXxRU";
|
|
|
|
String secretKey = "D_r9pemb6FKW6bYIXxRU";
|
|
|
|
|
|
|
|
// 设置翻译的源语言和目标语言
|
|
|
|
String from = "zh";
|
|
|
|
String from = "zh";
|
|
|
|
String to = "en";
|
|
|
|
String to = "en";
|
|
|
|
|
|
|
|
// 生成一个随机数作为salt参数
|
|
|
|
String salt = String.valueOf(new Random().nextInt(32768) + 65536);
|
|
|
|
String salt = String.valueOf(new Random().nextInt(32768) + 65536);
|
|
|
|
|
|
|
|
// 根据appid、文本、salt和密钥生成签名
|
|
|
|
String sign = Notes.getSign(appid, word, salt, secretKey);
|
|
|
|
String sign = Notes.getSign(appid, word, salt, secretKey);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建Retrofit实例,用于发起网络请求
|
|
|
|
Retrofit retrofitBaidu = new Retrofit.Builder()
|
|
|
|
Retrofit retrofitBaidu = new Retrofit.Builder()
|
|
|
|
.baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
|
|
|
|
.baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
|
|
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建百度翻译服务的接口实例
|
|
|
|
BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
|
|
|
|
BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
|
|
|
|
|
|
|
|
// 调用接口的translate方法,发起翻译请求
|
|
|
|
Call<RespondBean> call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
|
|
|
|
Call<RespondBean> call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
|
|
|
|
|
|
|
|
// 将请求加入到队列中,等待响应
|
|
|
|
call.enqueue(new Callback<RespondBean>() {
|
|
|
|
call.enqueue(new Callback<RespondBean>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onResponse(Call<RespondBean> call, Response<RespondBean> response) {
|
|
|
|
public void onResponse(Call<RespondBean> call, Response<RespondBean> response) {
|
|
|
|
|
|
|
|
// 判断请求是否成功且响应体不为空
|
|
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
|
|
|
|
|
|
// 获取响应体中的翻译结果
|
|
|
|
RespondBean respondBean = response.body();
|
|
|
|
RespondBean respondBean = response.body();
|
|
|
|
String result = respondBean.getTrans_result().get(0).getDst();
|
|
|
|
String result = respondBean.getTrans_result().get(0).getDst();
|
|
|
|
|
|
|
|
// 将翻译结果显示在编辑器中
|
|
|
|
mNoteEditor.setText(result);
|
|
|
|
mNoteEditor.setText(result);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 如果请求失败或响应体为空,则弹出提示信息
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed", Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onFailure(Call<RespondBean> call, Throwable t) {
|
|
|
|
public void onFailure(Call<RespondBean> call, Throwable t) {
|
|
|
|
|
|
|
|
// 如果请求过程中出现异常,则弹出提示信息
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + t.getMessage(), Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + t.getMessage(), Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 英文翻译为中文的方法
|
|
|
|
private void translate_u2z() {
|
|
|
|
private void translate_u2z() {
|
|
|
|
|
|
|
|
// 获取编辑器中的文本
|
|
|
|
String word = mNoteEditor.getText().toString();
|
|
|
|
String word = mNoteEditor.getText().toString();
|
|
|
|
|
|
|
|
// 将文本中的换行符替换为“//”,以便符合百度翻译API的要求
|
|
|
|
word = word.replaceAll("\\n", "//");
|
|
|
|
word = word.replaceAll("\\n", "//");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 百度翻译API的appid和密钥
|
|
|
|
String appid = "20250109002249097";
|
|
|
|
String appid = "20250109002249097";
|
|
|
|
String secretKey = "D_r9pemb6FKW6bYIXxRU";
|
|
|
|
String secretKey = "D_r9pemb6FKW6bYIXxRU";
|
|
|
|
|
|
|
|
// 设置翻译的源语言和目标语言
|
|
|
|
String from = "en";
|
|
|
|
String from = "en";
|
|
|
|
String to = "zh";
|
|
|
|
String to = "zh";
|
|
|
|
|
|
|
|
// 生成一个随机数作为salt参数
|
|
|
|
String salt = String.valueOf(new Random().nextInt(32768) + 65536);
|
|
|
|
String salt = String.valueOf(new Random().nextInt(32768) + 65536);
|
|
|
|
|
|
|
|
// 根据appid、文本、salt和密钥生成签名
|
|
|
|
String sign = Notes.getSign(appid, word, salt, secretKey);
|
|
|
|
String sign = Notes.getSign(appid, word, salt, secretKey);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建Retrofit实例,用于发起网络请求
|
|
|
|
Retrofit retrofitBaidu = new Retrofit.Builder()
|
|
|
|
Retrofit retrofitBaidu = new Retrofit.Builder()
|
|
|
|
.baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
|
|
|
|
.baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
|
|
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建百度翻译服务的接口实例
|
|
|
|
BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
|
|
|
|
BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
|
|
|
|
|
|
|
|
// 调用接口的translate方法,发起翻译请求
|
|
|
|
Call<RespondBean> call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
|
|
|
|
Call<RespondBean> call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
|
|
|
|
|
|
|
|
// 将请求加入到队列中,等待响应
|
|
|
|
call.enqueue(new Callback<RespondBean>() {
|
|
|
|
call.enqueue(new Callback<RespondBean>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onResponse(Call<RespondBean> call, Response<RespondBean> response) {
|
|
|
|
public void onResponse(Call<RespondBean> call, Response<RespondBean> response) {
|
|
|
|
|
|
|
|
// 判断请求是否成功且响应体不为空
|
|
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
|
|
|
|
|
|
// 获取响应体中的翻译结果列表
|
|
|
|
RespondBean respondBean = response.body();
|
|
|
|
RespondBean respondBean = response.body();
|
|
|
|
List<RespondBean.TransResult> transResult = respondBean.getTrans_result();
|
|
|
|
List<RespondBean.TransResult> transResult = respondBean.getTrans_result();
|
|
|
|
|
|
|
|
// 判断翻译结果列表是否为空
|
|
|
|
if (transResult != null && !transResult.isEmpty()) {
|
|
|
|
if (transResult != null && !transResult.isEmpty()) {
|
|
|
|
|
|
|
|
// 获取第一个翻译结果
|
|
|
|
String result = transResult.get(0).getDst();
|
|
|
|
String result = transResult.get(0).getDst();
|
|
|
|
|
|
|
|
// 在主线程中将翻译结果显示在编辑器中
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
@ -1706,28 +1757,33 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 如果翻译结果列表为空,则在主线程中弹出提示信息
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: No translation result", Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: No translation result", Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// 记录错误日志
|
|
|
|
Log.e("TranslationError", "Translation failed: No translation result");
|
|
|
|
Log.e("TranslationError", "Translation failed: No translation result");
|
|
|
|
Log.e("TranslationError", "Response: " + response.body().toString());
|
|
|
|
Log.e("TranslationError", "Response: " + response.body().toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 如果请求失败或响应体为空,则在主线程中弹出提示信息
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + response.code(), Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + response.code(), Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// 记录错误日志
|
|
|
|
Log.e("TranslationError", "Translation failed: " + response.code() + " " + response.message());
|
|
|
|
Log.e("TranslationError", "Translation failed: " + response.code() + " " + response.message());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onFailure(Call<RespondBean> call, Throwable t) {
|
|
|
|
public void onFailure(Call<RespondBean> call, Throwable t) {
|
|
|
|
|
|
|
|
// 如果请求过程中出现异常,则弹出提示信息
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + t.getMessage(), Toast.LENGTH_SHORT).show();
|
|
|
|
Toast.makeText(NoteEditActivity.this, "Translation failed: " + t.getMessage(), Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|