Skip to content

Commit 312ce0c

Browse files
committed
android app add model select
1 parent f49c3fe commit 312ce0c

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

android/app/src/main/java/com/mnn/llm/MainActivity.java

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@
88
import android.os.Handler;
99
import android.os.Message;
1010
import android.view.View;
11+
import android.widget.AdapterView;
12+
import android.widget.ArrayAdapter;
1113
import android.widget.Button;
1214
import android.widget.ProgressBar;
1315
import android.widget.RelativeLayout;
16+
import android.widget.Spinner;
1417
import android.widget.TextView;
18+
import android.widget.Toast;
1519

1620
import java.io.File;
1721
import java.io.IOException;
22+
import java.util.ArrayList;
1823

1924

2025
public class MainActivity extends AppCompatActivity {
@@ -27,9 +32,11 @@ public class MainActivity extends AppCompatActivity {
2732
private ProgressBar mProcessBar;
2833
private TextView mProcessName;
2934
private TextView mProcessPercent;
35+
private Spinner mSpinnerModels;
3036
// resource files
37+
private String mSearchPath = "/data/local/tmp/mnn-llm/";
3138
private String mModelName = "qwen-1.8b-int4";
32-
private String mModelDir = "/data/local/tmp/chat/" + mModelName; // default dir
39+
private String mModelDir = mSearchPath + mModelName; // default dir
3340
private boolean mModelReady = true;
3441
@Override
3542
protected void onCreate(Bundle savedInstanceState) {
@@ -42,8 +49,24 @@ protected void onCreate(Bundle savedInstanceState) {
4249
mProcessBar = (ProgressBar)findViewById(R.id.process_bar);
4350
mProcessName = (TextView)findViewById(R.id.process_name);
4451
mProcessPercent = (TextView)findViewById(R.id.process_percent);
45-
// using assert file
52+
mSpinnerModels = (Spinner) findViewById(R.id.spinner_models);
53+
// default using assert file
4654
mModelDir = this.getCacheDir() + "/" + mModelName;
55+
populateFoldersSpinner();
56+
mSpinnerModels.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
57+
@Override
58+
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
59+
if (position > 0) {
60+
mModelName = (String) parent.getItemAtPosition(position);
61+
mModelInfo.setText("选择模型:" + mModelName);
62+
mModelInfo.setVisibility(View.VISIBLE);
63+
mModelDir = mSearchPath + mModelName;
64+
}
65+
}
66+
@Override
67+
public void onNothingSelected(AdapterView<?> parent) {
68+
}
69+
});
4770
mProcessHandler = new Handler() {
4871
@Override
4972
public void handleMessage(Message msg) {
@@ -107,6 +130,26 @@ public boolean checkModelsReady() {
107130
return true;
108131
}
109132

133+
private ArrayList<String> getFoldersList(String path) {
134+
File directory = new File(path);
135+
File[] files = directory.listFiles();
136+
ArrayList<String> foldersList = new ArrayList<>();
137+
138+
if (files != null) {
139+
for (File file : files) {
140+
if (file.isDirectory()) {
141+
foldersList.add(file.getName());
142+
}
143+
}
144+
}
145+
return foldersList;
146+
}
147+
private void populateFoldersSpinner() {
148+
ArrayList<String> folders = getFoldersList("/data/local/tmp/mnn-llm");
149+
folders.add(0, getString(R.string.spinner_prompt));
150+
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, folders);
151+
mSpinnerModels.setAdapter(adapter);
152+
}
110153
public void loadModel(View view) {
111154
onCheckModels();
112155
if (!mModelReady) {

android/app/src/main/res/layout/activity_main.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@
3737
android:layout_alignParentBottom="true"
3838
android:orientation="vertical">
3939

40+
<Spinner
41+
android:id="@+id/spinner_models"
42+
android:layout_width="match_parent"
43+
android:layout_height="wrap_content"
44+
android:layout_gravity="center"
45+
android:layout_marginHorizontal="10pt"
46+
android:prompt="@string/spinner_prompt"
47+
android:spinnerMode="dropdown"/>
4048
<TextView
4149
android:id="@+id/model_info"
4250
android:layout_width="wrap_content"

android/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
<string name="navigation_drawer_close">Close navigation drawer</string>
66
<string name="action_settings">Settings</string>
77
<string name="main_describe">mnn-llm</string>
8+
<string name="spinner_prompt">选择模型文件夹</string>
89
</resources>

0 commit comments

Comments
 (0)