Added getTexts and action recorder, fixed github issue report token
11
app/src/main/res/drawable/btn_selector.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:state_pressed="true">
|
||||
<color android:color="#cccccc"/>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<color android:color="@android:color/transparent"/>
|
||||
</item>
|
||||
</selector>
|
||||
BIN
app/src/main/res/drawable/ic_pause_gray_48dp.png
Normal file
|
After Width: | Height: | Size: 457 B |
BIN
app/src/main/res/drawable/ic_pause_grey600_48dp.png
Normal file
|
After Width: | Height: | Size: 353 B |
BIN
app/src/main/res/drawable/ic_play_arrow_black_48dp.png
Normal file
|
After Width: | Height: | Size: 208 B |
BIN
app/src/main/res/drawable/ic_play_arrow_gray_48dp.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
app/src/main/res/drawable/ic_play_arrow_grey600_48dp.png
Normal file
|
After Width: | Height: | Size: 835 B |
BIN
app/src/main/res/drawable/ic_stop_black_36dp.png
Normal file
|
After Width: | Height: | Size: 117 B |
BIN
app/src/main/res/drawable/ic_stop_grey600_48dp.png
Normal file
|
After Width: | Height: | Size: 244 B |
BIN
app/src/main/res/drawable/ic_stop_white_36pt.png
Normal file
|
After Width: | Height: | Size: 89 B |
BIN
app/src/main/res/drawable/ic_video_record.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
@@ -22,7 +22,7 @@
|
||||
|
||||
<view
|
||||
android:id="@+id/console"
|
||||
class="com.stardust.scriptdroid.droid.ConsoleActivity$ConsoleView"
|
||||
class="com.stardust.scriptdroid.ui.console.ConsoleActivity$ConsoleView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
<com.stardust.view.MarkdownView
|
||||
<com.stardust.widget.MarkdownView
|
||||
android:id="@+id/markdown"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".EditActivity">
|
||||
tools:context=".ui.edit.EditActivity">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -27,7 +27,7 @@
|
||||
android:layout_gravity="right"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.stardust.scriptdroid.widget.ToolbarMenuItem
|
||||
<com.stardust.widget.ToolbarMenuItem
|
||||
android:id="@+id/run"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="match_parent"
|
||||
@@ -35,21 +35,21 @@
|
||||
app:icon_color="@android:color/white"
|
||||
app:text="@string/text_run"/>
|
||||
|
||||
<com.stardust.scriptdroid.widget.ToolbarMenuItem
|
||||
<com.stardust.widget.ToolbarMenuItem
|
||||
android:id="@+id/undo"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="match_parent"
|
||||
app:icon="@drawable/ic_undo_white_48dp"
|
||||
app:text="@string/text_undo"/>
|
||||
|
||||
<com.stardust.scriptdroid.widget.ToolbarMenuItem
|
||||
<com.stardust.widget.ToolbarMenuItem
|
||||
android:id="@+id/redo"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="match_parent"
|
||||
app:icon="@drawable/ic_redo_white_48dp"
|
||||
app:text="@string/text_redo"/>
|
||||
|
||||
<com.stardust.scriptdroid.widget.ToolbarMenuItem
|
||||
<com.stardust.widget.ToolbarMenuItem
|
||||
android:id="@+id/save"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="com.stardust.scriptdroid.MainActivity">
|
||||
tools:context=".ui.main.MainActivity">
|
||||
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
<include layout="@layout/content_main"/>
|
||||
|
||||
<com.stardust.scriptdroid.ui.SlidingUpPanel
|
||||
<com.stardust.widget.SlidingUpPanel
|
||||
android:id="@+id/bottom_menu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
@@ -107,9 +107,35 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/record"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:padding="10dp"
|
||||
android:src="@drawable/ic_video_record"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/text_script_record"
|
||||
android:textColor="@color/colorPrimary"
|
||||
android:textSize="16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.stardust.scriptdroid.ui.SlidingUpPanel>
|
||||
</com.stardust.widget.SlidingUpPanel>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:context="com.stardust.scriptdroid.MainActivity"
|
||||
tools:context=".ui.main.MainActivity"
|
||||
tools:showIn="@layout/activity_main">
|
||||
|
||||
|
||||
<com.stardust.scriptdroid.ui.ScriptListRecyclerView
|
||||
<com.stardust.scriptdroid.ui.main.ScriptListRecyclerView
|
||||
android:id="@+id/script_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
@@ -116,12 +116,12 @@
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.stardust.scriptdroid.ui.FunctionListRecyclerView
|
||||
<com.stardust.scriptdroid.ui.edit.sidemenu.FunctionListRecyclerView
|
||||
android:id="@+id/function_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<com.stardust.scriptdroid.ui.AssistClipListRecyclerView
|
||||
<com.stardust.scriptdroid.ui.edit.sidemenu.AssistClipListRecyclerView
|
||||
android:id="@+id/assist_clip_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
68
app/src/main/res/layout/remote_views_record_switch.xml
Normal file
@@ -0,0 +1,68 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:background="@android:color/white"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/ic_android_eat_js"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/start_or_pause"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="4dp"
|
||||
android:background="@drawable/btn_selector"
|
||||
android:clickable="true"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:padding="4dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_start_or_pause"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:src="@drawable/ic_play_arrow_grey600_48dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_start_or_pause"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/text_start_record"
|
||||
android:textColor="#777777"
|
||||
android:textSize="12sp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/stop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="4dp"
|
||||
android:background="@drawable/btn_selector"
|
||||
android:clickable="true"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:padding="4dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:src="@drawable/ic_stop_grey600_48dp"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/text_stop_record"
|
||||
android:textColor="#777777"
|
||||
android:textSize="12sp"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
<view
|
||||
android:id="@+id/operation_list"
|
||||
class="com.stardust.scriptdroid.ui.ScriptFileOperationPopupMenu$ScriptFileOperationListRecyclerView"
|
||||
class="com.stardust.scriptdroid.ui.main.operation.ScriptFileOperationPopupMenu$ScriptFileOperationListRecyclerView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
@@ -1,6 +1,6 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="com.stardust.scriptdroid.MainActivity">
|
||||
tools:context=".ui.main.MainActivity">
|
||||
|
||||
</menu>
|
||||
|
||||
@@ -25,6 +25,18 @@
|
||||
* `notStopped` 若当前脚本处于运行状态时返回`true`, 否则返回`false`。对于某些循环, 例如`while(true)`,请用`while(notStopped())`代替,以免死循环造成的脚本无法正常停止。
|
||||
* `isStoppd` 若当前脚本处于停止状态时返回`true`, 否则返回`false`。
|
||||
* `shell(cmd, root=false)` 执行shell命令cmd, 其中参数root表示是否以root权限执行,默认为false。例如`shell("input keyevent 26", true); //锁屏`。
|
||||
* `getTexts()` 获取屏幕上的文字列表, 返回一个java.util.List<String>。例如:
|
||||
|
||||
```
|
||||
launchApp("微信");
|
||||
while(!click("通讯录"));
|
||||
var texts = getTexts();
|
||||
for(var i = 0; i < texts.size(); i++){
|
||||
log(texts.get(i));
|
||||
}
|
||||
openConsole();
|
||||
```
|
||||
|
||||
###四、全局变量
|
||||
* `context` ApplicationContext,参见安卓[android.content.Context](https://developer.android.com/reference/android/content/Context.html)
|
||||
> 这里的context由于是ApplicationContext,是不可见的,不能用于dialog和其他UI相关。如果要显示弹窗或者视图,请启动UI模式(代码的第一行为`"ui";`既可)并使用activity代替。
|
||||
|
||||
36
app/src/main/res/values-zh/strings.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<resources>
|
||||
<string name="air_title_report_issue">错误报告</string>
|
||||
|
||||
<string name="air_title_issue">问题</string>
|
||||
<string name="air_title_login">登录</string>
|
||||
|
||||
<string name="air_label_issue_title">标题</string>
|
||||
<string name="air_label_issue_description">描述</string>
|
||||
<string name="air_label_device_info">设备信息</string>
|
||||
|
||||
<string name="air_label_use_account">使用Github账号发送</string>
|
||||
<string name="air_label_use_email">使用Email发送</string>
|
||||
<string name="air_label_use_guest">匿名发送</string>
|
||||
<string name="air_label_username">用户名</string>
|
||||
<string name="air_label_password">密码</string>
|
||||
<string name="air_label_email">邮箱</string>
|
||||
<string name="air_label_email_optional">联系邮箱 (选填)</string>
|
||||
|
||||
<string name="air_error_no_title">请输入问题</string>
|
||||
<string name="air_error_no_description">请输入详细描述</string>
|
||||
<string name="air_error_no_username">请输入有效的Github用户名</string>
|
||||
<string name="air_error_no_password">请输入正确的密码</string>
|
||||
<string name="air_error_no_email">请输入邮箱</string>
|
||||
|
||||
<string name="air_dialog_title_loading">正在上传到GitHub…</string>
|
||||
<string name="air_dialog_title_failed">无法发送错误报告</string>
|
||||
<string name="air_dialog_description_failed_wrong_credentials">错误的用户名或密码</string>
|
||||
<string name="air_dialog_description_failed_invalid_token">无效的access token. 请联系软件开发者.</string>
|
||||
<string name="air_dialog_description_failed_issues_not_available">Issues不可用,请联系软件开发者.</string>
|
||||
<string name="air_dialog_description_failed_unknown">未知错误</string>
|
||||
<string name="air_dialog_action_failed">OK</string>
|
||||
<plurals name="air_error_short_description">
|
||||
<item quantity="one">描述至少要 %d 个字.</item>
|
||||
<item quantity="other">描述至少要 %d 个字.</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
@@ -99,4 +99,20 @@
|
||||
<string name="text_bug_report">Bug Report</string>
|
||||
<string name="text_report_fail">提交失败</string>
|
||||
<string name="text_report_succeed">提交成功</string>
|
||||
<string name="edit_and_run_handle_intent_error">无法处理文件</string>
|
||||
<string name="text_crash_en">Crash</string>
|
||||
<string name="text_issue_report">问题反馈</string>
|
||||
<string name="text_script_record">录制脚本</string>
|
||||
<string name="hint_start_record">在通知栏中开始录制</string>
|
||||
<string name="text_start_record">开始录制</string>
|
||||
<string name="text_stop_record">停止录制</string>
|
||||
<string name="text_not_recording">录制未开始</string>
|
||||
<string name="text_pause_record">暂停录制</string>
|
||||
<string name="text_resume_record">继续录制</string>
|
||||
<string name="text_recorded">录制结束</string>
|
||||
<string name="text_copy_to_clip">复制到剪贴板</string>
|
||||
<string name="text_file_write_fail">文件写入失败</string>
|
||||
<string name="text_need_enable_accessibility_service">需要打开\"自动操作服务“才能录制脚本</string>
|
||||
<string name="text_join_qq_group">加入QQ交流群</string>
|
||||
<string name="text_qq_group_id_copied">已复制群号到剪贴板</string>
|
||||
</resources>
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
<PreferenceCategory
|
||||
android:title="@string/text_about">
|
||||
|
||||
<Preference
|
||||
android:title="@string/text_issue_report"/>
|
||||
|
||||
<Preference
|
||||
android:title="@string/text_join_qq_group"/>
|
||||
|
||||
<Preference
|
||||
android:title="@string/text_about"/>
|
||||
|
||||
|
||||