From db85d9da5d3f55ec666a85c56a3e71f6c2eb3b62 Mon Sep 17 00:00:00 2001 From: Lihri <3034236831@qq.com> Date: Thu, 12 Jun 2025 14:50:39 +0800 Subject: [PATCH] =?UTF-8?q?good=E7=BB=84=E8=AE=BE=E8=AE=A1=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Notesmaster/README.md | 2 + Notesmaster/app/build.gradle | 37 +++++ .../notes/tool/FingerprintDialogFragment.java | 135 ++++++++++++++++++ .../micode/notes/ui/VoiceNoteActivity.java | 47 ++++++ .../src/main/res/drawable-hdpi/add_node.png | Bin 0 -> 2296 bytes .../src/main/res/drawable-hdpi/listtest.png | Bin 0 -> 2295 bytes .../app/src/main/res/drawable-hdpi/lock.png | Bin 0 -> 751 bytes .../src/main/res/drawable-hdpi/note_bk.png | Bin 0 -> 484 bytes .../app/src/main/res/drawable-hdpi/unlock.png | Bin 0 -> 754 bytes .../app/src/main/res/drawable/ic_fp_40px.png | Bin 0 -> 4001 bytes .../main/res/layout/activity_voice_note.xml | 20 +++ .../main/res/layout/fingerprint_dialog.xml | 52 +++++++ .../app/src/main/res/values/NoteTheme.xml | 10 ++ Notesmaster/build.gradle | 17 +++ Notesmaster/import-summary.txt | 36 +++++ Notesmaster/settings.gradle | 1 + 小米便签维护与升级文档.zip | Bin 0 -> 4000614 bytes 17 files changed, 357 insertions(+) create mode 100644 Notesmaster/README.md create mode 100644 Notesmaster/app/build.gradle create mode 100644 Notesmaster/app/src/main/java/net/micode/notes/tool/FingerprintDialogFragment.java create mode 100644 Notesmaster/app/src/main/java/net/micode/notes/ui/VoiceNoteActivity.java create mode 100644 Notesmaster/app/src/main/res/drawable-hdpi/add_node.png create mode 100644 Notesmaster/app/src/main/res/drawable-hdpi/listtest.png create mode 100644 Notesmaster/app/src/main/res/drawable-hdpi/lock.png create mode 100644 Notesmaster/app/src/main/res/drawable-hdpi/note_bk.png create mode 100644 Notesmaster/app/src/main/res/drawable-hdpi/unlock.png create mode 100644 Notesmaster/app/src/main/res/drawable/ic_fp_40px.png create mode 100644 Notesmaster/app/src/main/res/layout/activity_voice_note.xml create mode 100644 Notesmaster/app/src/main/res/layout/fingerprint_dialog.xml create mode 100644 Notesmaster/app/src/main/res/values/NoteTheme.xml create mode 100644 Notesmaster/build.gradle create mode 100644 Notesmaster/import-summary.txt create mode 100644 Notesmaster/settings.gradle create mode 100644 小米便签维护与升级文档.zip diff --git a/Notesmaster/README.md b/Notesmaster/README.md new file mode 100644 index 0000000..b3bbdb2 --- /dev/null +++ b/Notesmaster/README.md @@ -0,0 +1,2 @@ +# MayWeSeeYouAgian + diff --git a/Notesmaster/app/build.gradle b/Notesmaster/app/build.gradle new file mode 100644 index 0000000..7438e65 --- /dev/null +++ b/Notesmaster/app/build.gradle @@ -0,0 +1,37 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 33 + buildToolsVersion "33.0.2" + + defaultConfig { + applicationId "net.micode.notes" + minSdkVersion 33 + //noinspection ExpiredTargetSdkVersion + targetSdkVersion 33 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + + } + + dependencies { + implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.2.1' + implementation group: 'androidx.appcompat', name: 'appcompat', version: '1.6.0' + implementation 'com.google.android.material:material:1.7.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.android.support:support-annotations:28.0.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' + } + + packagingOptions { + exclude 'META-INF/*' + } +} + diff --git a/Notesmaster/app/src/main/java/net/micode/notes/tool/FingerprintDialogFragment.java b/Notesmaster/app/src/main/java/net/micode/notes/tool/FingerprintDialogFragment.java new file mode 100644 index 0000000..1429829 --- /dev/null +++ b/Notesmaster/app/src/main/java/net/micode/notes/tool/FingerprintDialogFragment.java @@ -0,0 +1,135 @@ +package net.micode.notes.tool; + +import android.annotation.TargetApi; +import android.app.DialogFragment; +import android.content.Context; +import android.hardware.fingerprint.FingerprintManager; +import android.os.Bundle; +import android.os.CancellationSignal; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; + +import net.micode.notes.R; +import net.micode.notes.ui.NotesListActivity; + +import javax.crypto.Cipher; + +@TargetApi(23) +public class FingerprintDialogFragment extends DialogFragment { + + private FingerprintManager fingerprintManager; + + private CancellationSignal mCancellationSignal; + + private Cipher mCipher; + + private NotesListActivity mActivity; + + private TextView errorMsg; + + /** + * 标识是否是用户主动取消的认证。 + */ + private boolean isSelfCancelled; + + public void setCipher(Cipher cipher) { + mCipher = cipher; + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + mActivity = (NotesListActivity) getActivity(); + } + + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + fingerprintManager = getContext().getSystemService(FingerprintManager.class); + setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_Dialog); + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.fingerprint_dialog, container, false); + errorMsg = v.findViewById(R.id.error_msg); + TextView cancel = v.findViewById(R.id.cancel); + cancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + stopListening(); + } + }); + return v; + } + + @Override + public void onResume() { + super.onResume(); + // 开始指纹认证监听 + startListening(mCipher); + } + + @Override + public void onPause() { + super.onPause(); + // 停止指纹认证监听 + stopListening(); + } + + //监听认证成功与失败 + private void startListening(Cipher cipher) { + isSelfCancelled = false; + mCancellationSignal = new CancellationSignal(); + fingerprintManager.authenticate(new FingerprintManager.CryptoObject(cipher), mCancellationSignal, 0, new FingerprintManager.AuthenticationCallback() { + @Override + public void onAuthenticationError(int errorCode, CharSequence errString) { + if (!isSelfCancelled) { + errorMsg.setText(errString); + if (errorCode == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT) { + Toast.makeText(mActivity, errString, Toast.LENGTH_SHORT).show(); + dismiss(); + } + } + mActivity.onStopAuthenticated(); + } + + @Override + public void onAuthenticationHelp(int helpCode, CharSequence helpString) { + errorMsg.setText(helpString); + } + + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { + Toast.makeText(mActivity, "指纹认证成功", Toast.LENGTH_SHORT).show(); + mActivity.onAuthenticated(); + dismiss(); +// mActivity.onAuthenticated();//认证成功后就可以写成功后的代码逻辑 + } + + @Override + public void onAuthenticationFailed() { + errorMsg.setText("指纹认证失败,请再试一次"); + } + }, null); + } + + private void stopListening() { + if (mCancellationSignal != null) { + mCancellationSignal.cancel(); + mCancellationSignal = null; + isSelfCancelled = true; + } + mActivity.onStopAuthenticated(); + } + +} diff --git a/Notesmaster/app/src/main/java/net/micode/notes/ui/VoiceNoteActivity.java b/Notesmaster/app/src/main/java/net/micode/notes/ui/VoiceNoteActivity.java new file mode 100644 index 0000000..1662f29 --- /dev/null +++ b/Notesmaster/app/src/main/java/net/micode/notes/ui/VoiceNoteActivity.java @@ -0,0 +1,47 @@ +package net.micode.notes.ui; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.speech.RecognizerIntent; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Locale; + +public class VoiceNoteActivity extends Activity { + private static final int REQUEST_CODE_SPEECH_INPUT = 1000; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + startVoiceRecognition(); + } + + private void startVoiceRecognition() { + Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); + intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak now..."); + try { + startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT); + } catch (Exception e) { + Toast.makeText(this, "Speech recognition is not supported on this device.", Toast.LENGTH_SHORT).show(); + finish(); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_CODE_SPEECH_INPUT && resultCode == RESULT_OK && data != null) { + ArrayList result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); + if (result != null && !result.isEmpty()) { + Intent intent = new Intent(); + intent.putExtra("recognizedText", result.get(0)); + setResult(RESULT_OK, intent); + } + } + finish(); + } +} diff --git a/Notesmaster/app/src/main/res/drawable-hdpi/add_node.png b/Notesmaster/app/src/main/res/drawable-hdpi/add_node.png new file mode 100644 index 0000000000000000000000000000000000000000..f122cfb070be3bed1cb7732e92e58d382cafebf4 GIT binary patch literal 2296 zcmVQd{GqLuq0zi zP8vj=Y7pvscA4yv1C(8L0T!cB10lVNmb(* zSFuB|E|pfJne+EyXV$Z;o!jp0%DVh;*l%Xfob&(xIp4X@5C9b$vLS_v>VZ|qy>*8P z8x-4+C}h1-%-8;sQ|xd@vU+}AZIO~*1ZXca_5j!ppc;T?MKb_=17L~>lK_7z1mCKt zFh2U|di+r-^`%l|(%7c&(sktrQqpV8sAq=A(13$sB1j_K6oM~nn)%m}0qsty9Hb&u zYPqm2hU3~7|Lo+K@{>Ti8_|9v7-TOy@cL+jGBx-QO1N#AD< z_)rLnd0`?z2)?3e^5p1X>~7Q!Dwtw*&Bl)mL!4!x3W$(O;i)&LsNB-2Zg3sW7|?~GO6^k#NHL5Qb0@spU2}y$H;(oA9+$Nv{*H#Uo!UP zTQUHON--xEgo*OF(VkCD3f%^^buDPq(`CIZ(Nd6eoEj8~Vopo~iK;5SW3Vq=n4MAPhS><>;`JZw(mP!zMe@;|ekbD^WC5>d>F zW2*eg*s%IuP!$7Htf6(OHknjD1EVsd3KuFRqF5RO^YOU(+~{EJUJ&&HQ%u*zSuiT$ z^vx=wSQ-Nrx-QN=``t@kHm9+3f(I9DywGACk&<4`ky+l#W;hyvQ263g)r&i7o=QF= z6n-~XoT#vr)cvhzUO(z#a~k_n?3X=vF+99;m>Kmst8Jk|01>|4x^>|@H$L2C0Kl>C zS@G3_P5)tu+GY7gHFpyjKd}G7ix=M6?x~(H#XkPHwv#35bCyO#6eHrv8y{{;+R0wK zvRNnM$)fdWsb1~iXA@5!^RwTVVx}ohdGI+Zipd;G%B(n%VY`q_Q}p=RFOa$JoDrJZ z^j%Wo72;Ik6RhF86BiO5SE^ik2+w>A!B&tG#~R!8-CjQMq}ZaaoUmPAOp3XcVlgRZ z-_UjCgd@*z6qAyU`*fMBnqo|Vl=K?%p;&8YvW6KgL96R(q!=;4jE2J<$)^#PV)OHA zlW%FPc8Xc|=I7PJ2um^3r22HCj>IxBTh|;O!-?G}<`%y|Y+u{=q@+XH_S@LG)0idn zJUMC!yl~-SQ!L{iMVp6*(0(^RxKfN6yL?N-`5O|aYt`d_mQ&0TCrX@c3o~}R>7cs( zfz)=ex1AnN5&~1q_?LYvdj-P2wtgpa=rKkX_53O^3GA__B~HEEa0W~%v<;aRCG88> zx!8dQIm?VV@(>~TFI#JpZ(O(LR>hXC?m6-BVfov6?W_PGf^mCPl;^Ys?gK?FUy4;$ zE}g#am|MYPoDl`?y;7-fuGCN4I)tSdJeZ{VD3LG4q))oVz>f!(;VI@!EAU)QC#1G? ziL7=b7tRsp=3-|$zW2YlN7|8wuI@Q)c1}A3AHCcH0NpKZyPaFMFLt0oekmC{$u0p( zjXX23y}puT4VVa1%=iKTm?4Q$V=gBKLxLcL;EC}OsIVtI&9mg3z8xvu- zN zyD*}{8IS=Xcm!c7R#CAux-?z3F6Lqt6-EMKDK^+w{tXclYn@_57DG{X15uq(JlJTyZ<_RaItLE=cgIJRH^MvIx;hWm^s)Yr$pBek2>cxtQ1!1DR+-OboYctul_~E>p+Qv40TQaHkN{RjX zrcnwJ0-wg?X4l9-Y$~7UUH8R;NK?CBy|AEOPA`oAVJ=f4D?VUK$ zuRW^Xve=~veh0u4(~ALs5d7YjEsGrv=j64e6xnE|uG#pZVTkk0sE#Vle1r%yswz*8 z4XYO;Ne>aev)b6I*DmVHSt;q&m2i#_{DG#)Q=@~i`%$HtS1;y=>syQ?ONMxh84Y%C zA6J=R)QDe5^&9RL7v_txr>I15g8?0;$EbB!EW%?pvRx_*_wV zq@uzY8tjYDAsBrkp;)mCVAV@WD7F@4B|eW6B=2J5FnVrCF4>@1K-r*}3;sVkFnq66 So=*(`0000eh4bY)!^&fNe22#iTYK~#90?VZVv z97Pa@BeJ_^=~;RPTNoQ*8!T(MAeJ!_NF2Z%5JHGm;sFpBUVt~?eK`673>R)(kpLlq zkSqbV8P9ZgWpJoos%z`6%B;%BtoRP2>7}xB`7<&iD>DnP-FywQ5D@?X<$UA^xcaiB zAXxlSmQ*?>*H*o}6ZCW6jkQQbKt3uGGi_f~itIN_$ZD}_L(7zskqKlYk&S;03CSlLyp$sm4SM+D`)_>y>D#Zqa=X7Z zl|G8_m98fwjj z9BDArtwB$15Z3>mBiM%a|2 z#IOq*t%|CNd(_w< z)x=rtoGgcfp3 z(W2l4BJd)V5$wX#8;(bOk)vl=Ik(q}x7UQG`*R0?qr)y_;S*XlkrT0wEx~YnET^Fi zmnSQ76c{0LY{|9fGstd8Lm4hlHaiX8xy>>jEe8yqX00R7IR$|&IX4My$|sDcrWE1u zF|<6NfNPBSj`eZa%|dmjM2___boNa=nO2|w)}qJd$L0hgLTKud-mdT_)^0JQEUe?& z&WDJBX;H`}ccKUEdM2^hl5$Ep;$a6o!scWam@WTWBIBrz1!Xh#> zY)p6KavW!a@tOto7ae)25M$o=(Dbd=oi#j`H;=wN0ZH7mkq} zlfD!YvF*V^E>?zkMv-+ghL!D9&T-;I=C0@w07ALTR~skcOiGTXd5{^)aL6-_O}DS* zorIKKYU?kE(zQ}F-M*F=n8~bU*fia~j3R3x7;3xSB1geKST_g}ISLI>cSvV6?nNd!Z-g{Inz4==K)c9DSXjTM5wGFR^~n&B+h9gO_1woi-;r6_Y7>&#K*HMbLHpF6 zu$54z5$w;;c_T#ts6S60@;z&rllKmZtP63wF1nj=8LZ>2Nv?CTLeN@dy5Y&a924i- z)M(tev%d&#vn7ns>SPL99MV6!57 zQ4l8N%CTltvDn}eOiVgAY|GN5mY>R=9=o_7tT_{_Ep={m5FITC4o*eU+2BTmVHyD- zsG|5l#yS$TdAy{+2M#@N#X80(ostGh+yj^Mt~-b;?>{NW#o4zyX&)EyNt@XU^pShs zfZ*mFpX_1GL`3yh2-$+&5^&(AkaV>Gz04>*uc==sd~A2n9-mADgvq~x&Vp-wvNHf&pRi#Ce6c)KEQmQ zSJU5r{(N|2gs3Q*)J~B*VRkeZG*FYX!5R^#(e(TKKO7ysdwlg4L`W3c4z5LCwqA|N zl(CtgU`2CfTt?R834M3(r^`=YzjJ5r;NU=^9#3XAa`8B6lsWPOT6`2x$l$e`r}2OB zdhB;j5AMExbo;sC?rwj$yED6IiwFRkNE3ik3PbfR>yw-)l}XduEaeCQMAYj+A89h3 z9FK1h8M)f=AUcxQNUxHsGxs9q0IrP2%Oct?NX-wH*(P2uv}fl`0` z^6TlFr`yNJW33~l5a20A52LexAN=?GSf59F60NRELR{8_U&DFweu8(IPvJ!?#M9iF z+!e}kJdN(%|MAMRS5Jm}{hqowJG+=nc8F*^IeU2V_@5__&ZigCNYkp!Jq;|AH^t0v zbveh=R!I4dSw49A#rIx1xqao*R=*c%9nbwBfXeWeCHr4WfUk=8mQ z9TDlo7+tRqCJR-RLeY21D`Yw7R?d_)O1I8beh(AA){5!I%vbXg%Ne~AuW|Lm_4Pcz z0#`l2Y{KzU+7fx>wA7ldTT`v4Gn+_6L|QNQ_stb)J|q;SkbQr{L5Mb3T#`y^jdpSU zw-(bpWgn(qY$VOuIJC%csl1Z!73Q``u&Jz<&sQZ|KU>>~7!_Z;no#1>{{d=rWgY>O R+yd0|t#h?nO@(!8wVKje z=SVgH^g_D#Vlxr=R{$@;Xq8gunM}q_8bBtKag|c%Ay!_*c5LJeaFTag>*H;gQEPon z@-F1WdM0F@7POPR^gJ)MEx0e9=cPzq2A5-PPDsKnBHsmg$cY6Lg0(_@9?NWhilg0e zoKuoFm~YJy$s5OUPUDsX%bb|5Y*E?g7J!xHi3A7m2B1r_PO=W53*arz39;?7&;kIY zQmHJKMWz>*?Gkx6old9yKKbs-*t;UO{Vh5&#$=(CDh0f1Bv{gsL>+dlE`dafVEAm8 zl(n|t54x`VD}e)PYwcfkUi#8;%0UckZ9&Pw0sznDa`_>F10Rx7sq_HgSsXY6fLEcU z6QlbXKvCv4D?p$KwIXD{E~TKyEl3mH_-%qyGrtXTm@q*L8~RoJ4;$9*^f0b<^W` z8;LxQ#iPSrNPz#~N(LPGQW|jLaM$t>6YoAuq?)ZrrBd0=!^D?^KFvaG?DcWV4H!xM hJl9&^E{aTy`~habX<50tu~`5B002ovPDHLkV1h#PT!H`q literal 0 HcmV?d00001 diff --git a/Notesmaster/app/src/main/res/drawable-hdpi/note_bk.png b/Notesmaster/app/src/main/res/drawable-hdpi/note_bk.png new file mode 100644 index 0000000000000000000000000000000000000000..61cf055ccafb1e8679de1bc44e5d05f77201f003 GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0y~yVB7^{XK^qAN!L5fost!q`9LmFB6C>j?=8JZA>Ysoy#Ng@b K=d#Wzp$P!tj-34f literal 0 HcmV?d00001 diff --git a/Notesmaster/app/src/main/res/drawable-hdpi/unlock.png b/Notesmaster/app/src/main/res/drawable-hdpi/unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..d4eb1a1fdb11504aa3dae5542067a79b29339529 GIT binary patch literal 754 zcmVsuU5j z%patnj+76GoIh}=tdPPf+*wpaa_LAZT+q-`*rq_B1Hz_Y?l>+NybuT(X(hP3o%iO= z?9MJ>X`bg5Mx)V@G3L-1vk%}IfP%d40%()`PO_o3z6^q(YwLTVWipu($r^wG0Ao1@ zBx{*WrnEA!=Xp7jrvOGN0385L02eZv@+|q?h~%l~dAVhy-UD!(aMmJO)mj%Tm5NHv zsZ=UTYh5H+1<*>&y%nEU;Licv#iLb9o#gX*$2Nd`KJO@{P7E{5zQ~CWFz()YrfB3eZ@~jEq1*Tmz%KwFJ6ac=! zzBB%2f;Fv!B|tY~Dw4sNC;tjGhSgO7+VW>_K@qOa1S4!nZIC>JGXmvgR1@Zl4OYTFDw*UYD07*qoM6N<$f+$s6H~;_u literal 0 HcmV?d00001 diff --git a/Notesmaster/app/src/main/res/drawable/ic_fp_40px.png b/Notesmaster/app/src/main/res/drawable/ic_fp_40px.png new file mode 100644 index 0000000000000000000000000000000000000000..122f44257b1aa188955ab01e5bf71a5f079b1da5 GIT binary patch literal 4001 zcmZ`+X*d+z`yORq$19SAMkXZ7SjQU1l4O@bh_PjCgR+dV??i>NdxauD!>W=066X%!Ys~F{BJNb zp3iBgpM1`N-b4GoHUQ9&!FJ-zaL(xhEev!3wK&1Gb0UH;w73rdgnGT+28SR=ex}F42!>^Z6E+3b?N2)BNGi~uNEAnbmk<4cPVkkKme zi?Dt7c=Hs;Cx;j0GkvK7>%d`!UXK_fPa30w`BKyye-$Q`x<9kXAt+fGNv2$Q5A72~ zZZ#j|P>#`<$j@_^I3d390}%&}$Lcl7{VwlsWxx8JIF_43w&XS)YbI@+cwx=dB@|XX z5hNAF43JpRM;BubLTA4u*{vz_$eqRi)=lgv7$UaoAP&o#9VUKSwT72?>LU0pEQj`A zN0OsdmhQ;ZosnX#z&uIJq-%w3HKn7hpHQWF;CGP8d#t?+w$XB;X$^3qf4QyD2t-E` zBrX z_*;U?A&zbk=jvt?*r(-`RK|JpKanT9v&(RgohA!=tr;=pIm#nAdkhV&+NSjOLu+7+ zY>#$DRsaYT#hAtZk5!pX2!p2>2((ZjD#dtRV{#K(bF8YolG?Q#JQwctDfF0g#I9?QVA*PAg>(irq{XraS`YpW#K=73X2F*PPj1o~QBGqa<0} zFCaQxfJK^!@rL4JMK^+_4aU!Rr&n32LPTNf&=SA&lW0TDJ-kdkp(9FRiItU^;QvhR zrq@4`z3dAIiJx5x+3u(l3t%f76h(VSwZyA?HJgc@ktM6{10HQP=5ATR>5)t! z>S8`QRDt=K*HGC*8&d(=cfwg0z5c~MY6mShJR&(zn!Y3AL5Ylx=%e{>ysVc}=sf4=)hL_zrBiI6QXpytI)Cw*FrEj z&EYTF{1C4Y(LfJ;S?H3#=H%pnef}(BI^CfRas^mY+xBv0M3lDB!%`4&V%0+OTKxTP zVs|9HuqRyRLhI*BJy`c}PF}6m%H?*oHXP5Lh_*ed_zMY*++X>9a3~z8a+zigE+&>$ zI=SxtE`=X_%k-ul%1iQ~5|la1-+o|CEWKG+(u|Q=^M185a{pxhs>e39rg(elNV%f2 zwtE3M7O}NzbXuGJsqKAAY2l(z>t2G`jfK;hUXhcMBp5ar;O`cDi`!yNYG%ekP!Xl> zq_q>0$A#=3%@bh;Y-?~KuH7!)a@|keu%#YNi*!G4Q|$=3u>6=_J8Ozd1QdRvy3THd`FUfZ#GZ9Cx!Kme6ob$cGrx8z&HPjoo{Kh7JLJ;e(bD#WDNT=<-P~Z^O z-zdUVhpjL?sQbf~m?79jB^K#{^W8?7?2|)+k()!3|YDGV?hQlzN~^ z?p?{(L~4fm_ii;ZVk^-;_pFm5JH9hESZ5(~0VG~?g+Gy-k2tLDX|kKvZ15V(78{lQ zSj>rC#k)sVIv)+@(xOQX7Kfx4I~-uJVL!~(4>sAV!`wN}jmq%GOXl>4nx+^Z#Xxub z!h1HN+&)_|v8{be@9_{9{tT=(Jr(+SnMX2f{vNw|SUnxX7dvzovEZuZKiXlu>fZtj zn|m~dgo{I?6Ca%AR>`OquUTThSf~0SMwxD(99K5xV7gHXV?O~p2EknTy0fc;4>Y@u zl$HGlP5J6QPkSFm;>ndY@1(+3Qz==rr@B4M>{@(Q?gm@ zku)c%)<}lP@KZ5?^^F~b<{JfzT|F5-T^L7waZ=oX9kDe)F<^KN7}u9jQh@IB{(D*< zm;E8RiddTMe`?KU+p^Ab0U^hEN^W>ZJIH2}xWx7=g2WqMk724RI+7?DV{L?V5gtxwDcp>^wH)w?t;i=9f7L?hopsj zNi+eEYkgfZTSvDiX2X=ZW>FXCR7kEup<8;m)2U?RqTwINt8?$#+PtFl7-XHJ4#Ec} zyX{gXc^S__nCVMOLW6inXf;prrprMZf<`%-ST*v1H_f}8V%=_0YT@5HZe89zK$9Ci zyLy*mpTBbqkDu%p{_9Hkryo&E+>6XL5~$>jSR2VzV}1huO-VpH2Dd+6aD42v$AP@2 z$jiIu`r*(q%~?0Ge(h^U&VTB!+SVnv+9DbHO=zIecP77Uk8NJ2^+R`)+?D)}^JpYHMTvGX@TQ(o8~GXYnF0q+25XRvhgI!fk8Gze;f$p$!jg6 z?U|!QqZEX7qg>e-Ad^z1`s^NGkL^R|8-BV5FeHrqe1UUC4@zJ8@~K?;pJuypfr7^A z?7)Meh&ENj9N1pwz)FQNxE}Wsx8mu|KTwqJ8;&n^_SDGNJWLu9O}Gx~*qfSuC`%0D zL<)2jk9Twj<4%>qN*T^1r@0>LA5F*$&C`v3e@-Sa^W1Kl91>PZTb3k6xwmlETv7`r zI~)3N?7-79w2*Fu!>^&M$sTK)Th2#W-_>`zRiz8595~Ho*ehwL-r*@PU+fViMLS8Q zeCc$vyO)Z= zDxlOiWw&{D;~5-&ohSPx>}7gr}N9_oflc@N!2BzHA3UB zi7bz}F6i+cb=&<4&44NP>W23018F{3;Pc;tA$B`k2Gftpo1kKu=Q!8a?E?7_+CE1$ zn&cx5rF!>06Z+oCrG=ZaaUwoHvI8q-xcw;kYFJM2{zZr(u!>=>z_KJ6^y?h60&%%6 zI~IuU2d$fLoo)g12g`&BMZwbbP9t{i<>E*5NRIgMB4gDd#mhzgWukelheYL(F_pND zh{KD(-uJ}u4+nLA!;>?ybsAD;*4D{}^u}weS0+E&ps&YxbZ`HLSueLn5sLFw9d>h@ z~Faza8)9xvz+JOIqS7!B%7El5h;JSZ_)dtK7M^& zav_-?_}CaJ@z`Xai3n_JY`OW3NaPJ{#W>3WX<-dE@QN>R|}e~ELiGy-pH6c0}sTEeh5?aba7MNE+S^q5g0&Sobs2woCN zN+ogwwgz}C25jz7D$uVa!x200Ox!LIUB#z$3Z(hM@35GN6d9Y@+oTeYRp{}QinLbb*kP7nZ%XDLZf0C!qBC7&7D2K9f>>ma}y*b2(20 z&UJW4_PPI2-n$Bs^a>rc<`e}eX3iqUNb*x(U4cg5yT zX=_Gq7J|V*IhFIeR5V)b=Ok_4%ErS6F={AgWJ{E~Mefl2XSvIs4-`eDwXAKU)_0D5 zH`YDpFh*ulwL#-YBID2>r=fO6d1*~+{U;UWmw@I;FoCS-7pzIzJ*vc$dj9H7Z@)iN znV;J`t58egR^DfX&ewVa0=n$xUu$dRTI=B*>#Lcj?ci_3`;?{1H%%=#=!0K7gQt#K z{y*ARY?hgMwTg!0y_K5A1%*;?`Vp|o1`-bX^Is+-9x-jY-CwP4uBA85Zoi9s)(j4B z%E3ETWqIu^vdFOOT7v7dgHOC<8%SE%CqF?kE_4N=w$`PKJ8_EOpvfSw04br*u*aBJ z7G6D3`O&j+Q`CVRpobI=THRPPp40!;<@fAVU*CP4>i2RB$=4=VfG6-Y>wA3U#N~fG z2_I`a(&3QgMn0Z6$ydfk@2dvkNI7RS8*^(#OC;H~e9ZjKlK=ArLi`OJ^rCNFqpv+b zqhGEpJQH8$L@1gQGcvcetV)gVpfq{tNwCrcGo)H~qEt?Wg`;J1gb}xl&pT4FAU$}H zt8Dk8w`8~_kmImO$u^0y&MR&vU!vhu3(=k$Cbn;aTq_+cl+Ba1McdXz-o0K#rzL_dBR5k literal 0 HcmV?d00001 diff --git a/Notesmaster/app/src/main/res/layout/activity_voice_note.xml b/Notesmaster/app/src/main/res/layout/activity_voice_note.xml new file mode 100644 index 0000000..45d6670 --- /dev/null +++ b/Notesmaster/app/src/main/res/layout/activity_voice_note.xml @@ -0,0 +1,20 @@ + + + + + +