pull/13/head
yjhjkcl 1 month ago
parent c745ef0f28
commit 6121eb6d8b

@ -12,63 +12,91 @@ import android.widget.Toast;
import net.micode.notes.R; import net.micode.notes.R;
public class LoginActivity extends Activity { public class LoginActivity extends Activity {
// 声明账号输入框
private EditText accountEdit; private EditText accountEdit;
// 声明密码输入框
private EditText passwordEdit; private EditText passwordEdit;
// 声明登录按钮
private Button login; private Button login;
// 声明取消按钮
private Button cancel; private Button cancel;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
// 设置当前活动的布局文件
setContentView(R.layout.activity_login); setContentView(R.layout.activity_login);
// 初始化账号输入框
accountEdit = (EditText) findViewById(R.id.account); accountEdit = (EditText) findViewById(R.id.account);
// 初始化密码输入框
passwordEdit = (EditText) findViewById(R.id.password); passwordEdit = (EditText) findViewById(R.id.password);
// 初始化登录按钮
login = (Button) findViewById(R.id.login); login = (Button) findViewById(R.id.login);
// 初始化取消按钮
cancel = (Button) findViewById(R.id.cancel); cancel = (Button) findViewById(R.id.cancel);
// 为取消按钮设置点击事件监听器
cancel.setOnClickListener(new View.OnClickListener() { cancel.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// 弹出提示信息,告知用户应用即将退出
Toast.makeText(LoginActivity.this, R.string.app_already_quit, Toast.LENGTH_LONG).show(); Toast.makeText(LoginActivity.this, R.string.app_already_quit, Toast.LENGTH_LONG).show();
// 结束当前活动
finish(); finish();
} }
}); });
// 为登录按钮设置点击事件监听器
login.setOnClickListener(new View.OnClickListener() { login.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// 获取账号输入框中的内容
String account = accountEdit.getText().toString(); String account = accountEdit.getText().toString();
// 获取密码输入框中的内容
String password = passwordEdit.getText().toString(); String password = passwordEdit.getText().toString();
// 判断账号和密码是否都为空
if (account.equals("") && password.equals("")) { if (account.equals("") && password.equals("")) {
// 创建一个进度对话框
ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this); ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this);
// 设置进度对话框的标题
progressDialog.setTitle(R.string.Loading); progressDialog.setTitle(R.string.Loading);
// 设置进度对话框的提示信息
progressDialog.setMessage("Loading..."); progressDialog.setMessage("Loading...");
// 设置进度对话框可以被取消
progressDialog.setCancelable(true); progressDialog.setCancelable(true);
// 显示进度对话框
progressDialog.show(); progressDialog.show();
// 创建一个新线程来模拟登录过程
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
// 模拟登录过程,您可以在这里添加实际的登录逻辑 // 模拟网络延迟让线程休眠2秒
try { try {
Thread.sleep(2000); // 模拟网络延迟 Thread.sleep(2000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
// 在主线程中执行以下操作
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
// 关闭进度对话框
progressDialog.dismiss(); progressDialog.dismiss();
// 创建一个意图,用于跳转到笔记列表活动
Intent intent = new Intent(LoginActivity.this, NotesListActivity.class); Intent intent = new Intent(LoginActivity.this, NotesListActivity.class);
// 启动笔记列表活动
startActivity(intent); startActivity(intent);
// 结束当前活动
finish(); finish();
} }
}); });
} }
}).start(); }).start();
} else { } else {
// 如果账号或密码不为空,则弹出提示信息,告知用户输入无效
Toast.makeText(LoginActivity.this, R.string.invalid, Toast.LENGTH_SHORT).show(); Toast.makeText(LoginActivity.this, R.string.invalid, Toast.LENGTH_SHORT).show();
} }
} }

@ -101,7 +101,8 @@ import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory; import retrofit2.converter.gson.GsonConverterFactory;
public class NoteEditActivity extends Activity implements OnClickListener, public class NoteEditActivity extends Activity implements OnClickListener,
NoteSettingChangedListener, OnTextViewChangeListener {// 类成员变量和方法,封装了便签编辑的相关功能 NoteSettingChangedListener, OnTextViewChangeListener {// 类成员变量和方法,封装了便签编辑的相关功能
/** /**
* ViewHolderUI * ViewHolderUI
*/ */
@ -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;
/** /**
@ -410,7 +412,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
showAlertHeader(); showAlertHeader();
convertToImage(); convertToImage();
String mPassword = mWorkingNote.getmPassword();//读取数据库中的密码 String mPassword = mWorkingNote.getmPassword();//读取数据库中的密码
if (mPassword!=null) { if (mPassword != null) {
//创建dialog插入edittext用户输入密码并做出检验。 //创建dialog插入edittext用户输入密码并做出检验。
final AlertDialog.Builder builder = new AlertDialog.Builder(this); final AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
@ -428,13 +430,13 @@ public class NoteEditActivity extends Activity implements OnClickListener,
Log.d("password: ", password); Log.d("password: ", password);
//判断密码正确性 //判断密码正确性
if (!password.equals(mPassword)) { if (!password.equals(mPassword)) {
Log.d("密码不正确,正确密码是:",mPassword); Log.d("密码不正确,正确密码是:", mPassword);
dialog.dismiss(); dialog.dismiss();
onBackPressed(); onBackPressed();
} }
} }
}); });
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener(){ builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); dialog.dismiss();
@ -668,11 +670,12 @@ 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
final EditText etName = (EditText)view.findViewById(R.id.et_foler_name); final EditText etName = (EditText) view.findViewById(R.id.et_foler_name);
etName.setText(""); etName.setText("");
etName.setHint("请输入密码"); etName.setHint("请输入密码");
builder.setTitle("为便签设置新密码"); builder.setTitle("为便签设置新密码");
@ -688,7 +691,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
//关闭软键盘 //关闭软键盘
InputMethodManager inputMethodManager = (InputMethodManager) InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE); getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(), 0);
//关闭dialog //关闭dialog
dialog.dismiss(); dialog.dismiss();
} }
@ -699,7 +702,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
//关闭软键盘 //关闭软键盘
InputMethodManager inputMethodManager = (InputMethodManager) InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE); getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(), 0);
} }
}); });
final Dialog dialog = builder.setView(view).show(); final Dialog dialog = builder.setView(view).show();
@ -1279,12 +1282,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
} }
/** /**
* *
* *
@ -1322,10 +1319,12 @@ 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
*/ */
public String getPath(final Context context, final Uri uri) { public String getPath(final Context context, final Uri uri) {
@ -1390,9 +1389,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
/** /**
* Uri * Uri
* @param context *
* @param uri Uri * @param context
* @param selection * @param uri Uri
* @param selection
* @param selectionArgs * @param selectionArgs
* @return * @return
*/ */
@ -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();
} }
}); });

Loading…
Cancel
Save