index.uts 4.8 KB
Newer Older
杜庆泉's avatar
杜庆泉 已提交
1 2 3 4 5
import Color from "android.graphics.Color";
import TextView from "android.widget.TextView";
import FrameLayout from "android.widget.FrameLayout";
import ViewGroup from "android.view.ViewGroup";
import Gravity from "android.view.Gravity";
杜庆泉's avatar
杜庆泉 已提交
6 7
import Runnable from 'java.lang.Runnable';
import MediaPlayer from 'android.media.MediaPlayer';
杜庆泉's avatar
杜庆泉 已提交
8

杜庆泉's avatar
杜庆泉 已提交
9 10 11 12 13 14 15 16 17 18 19
import logo from "../../static/logo.png";

import {
    onAppActivityDestroy,
    onAppActivityPause,
    onAppActivityResume,
    onAppActivityBack,
	getUniActivity,
	getAppContext
} from "io.dcloud.uts.android";

20

杜庆泉's avatar
杜庆泉 已提交
21 22 23
/**
 * 定时任务参数封装
 */
杜庆泉's avatar
杜庆泉 已提交
24
type TimerOptions = {
25 26 27 28 29 30 31 32 33 34
	/**
	 * 定时任务开始的回调
	 * @res 回调参数
	 */
	start: (res: string) => void;
	/**
	* 定时任务执行的回调
	* @res 回调参数
	*/
	work: (res: string) => void;
杜庆泉's avatar
杜庆泉 已提交
35 36 37
};


杜庆泉's avatar
杜庆泉 已提交
38 39 40
/**
 * 执行延时任务
 */
杜庆泉's avatar
杜庆泉 已提交
41 42 43 44 45 46 47 48 49
export function doTimerTask(opts:TimerOptions) {
	opts.start('doTimerTask start');
	setTimeout(function() {
		opts.work("doTimerTask work");
	}, 2000);
  
  return { name: "doTimerTask" };
}

杜庆泉's avatar
杜庆泉 已提交
50 51 52
/**
 * 执行周期任务
 */
杜庆泉's avatar
杜庆泉 已提交
53 54
export function doIntervalTask(opts:TimerOptions) {
	
杜庆泉's avatar
杜庆泉 已提交
55
	let taskRet = setInterval(function() {
杜庆泉's avatar
杜庆泉 已提交
56 57 58 59 60 61 62
		opts.work("doIntervalTask work");
	}, 2000);
	opts.start('doIntervalTask start');
  
  return { name: "doIntervalTask",taskId:taskRet};
}

杜庆泉's avatar
杜庆泉 已提交
63 64 65
/**
 * 清除周期任务
 */
杜庆泉's avatar
杜庆泉 已提交
66 67 68
export function clearIntervalTask(taskId:number) {
	
	clearInterval(taskId);
69
	return { name: "clearIntervalTask"};
杜庆泉's avatar
杜庆泉 已提交
70 71 72
}


73 74 75 76
/**
 * 实现一个添加view的 Runnable类
 * 用法说明:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB
 */
杜庆泉's avatar
杜庆泉 已提交
77 78 79 80
class AddUIRunnable extends Runnable {

    override run():void {
		
杜庆泉's avatar
杜庆泉 已提交
81 82 83
        let textView = new TextView(getUniActivity())
        textView.setText("HELLO WORLD");
        textView.textSize = 30.0.toFloat();
杜庆泉's avatar
杜庆泉 已提交
84
        textView.setBackgroundColor(Color.RED)
杜庆泉's avatar
杜庆泉 已提交
85 86
        textView.setTag("helloText")
        textView.setGravity(Gravity.CENTER)
杜庆泉's avatar
杜庆泉 已提交
87

杜庆泉's avatar
杜庆泉 已提交
88
        let decorView = getUniActivity()!.window.decorView;
杜庆泉's avatar
杜庆泉 已提交
89 90


杜庆泉's avatar
杜庆泉 已提交
91
        let frameContent = decorView.findViewById<FrameLayout>(android.R.id.content)
杜庆泉's avatar
杜庆泉 已提交
92
        let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
杜庆泉's avatar
杜庆泉 已提交
93 94
        layoutParam.topMargin = 200;

杜庆泉's avatar
杜庆泉 已提交
95
        frameContent.addView(textView,layoutParam)
杜庆泉's avatar
杜庆泉 已提交
96 97 98 99

    }
};

100 101 102 103
/**
 * 实现一个移除view的 Runnable类
 * 用法说明:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB
 */
杜庆泉's avatar
杜庆泉 已提交
104 105 106 107
class RemoveUIRunnable extends Runnable {

    override run():void {

杜庆泉's avatar
杜庆泉 已提交
108
        let decorView = getUniActivity()!.getWindow().getDecorView();
杜庆泉's avatar
杜庆泉 已提交
109
        let frameContent = decorView.findViewById<FrameLayout>(android.R.id.content)
杜庆泉's avatar
杜庆泉 已提交
110 111 112
		
		let targetTV = frameContent.findViewWithTag<TextView>("helloText")
		frameContent.removeView(targetTV)
杜庆泉's avatar
杜庆泉 已提交
113 114 115 116

    }
};

117 118 119 120
/**
 * 实现添加view实例至decorview
 * 
 */
杜庆泉's avatar
杜庆泉 已提交
121
export function addViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
122
    let uiRunable = new AddUIRunnable();
杜庆泉's avatar
杜庆泉 已提交
123 124 125
    getUniActivity()!.runOnUiThread(uiRunable)

}
126 127 128
/**
 * 实现从decorview上移除指定view
 */
杜庆泉's avatar
杜庆泉 已提交
129
export function removeViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
130
    var uiRunable = new RemoveUIRunnable();
杜庆泉's avatar
杜庆泉 已提交
131 132 133 134
    getUniActivity()!.runOnUiThread(uiRunable)
}


135 136 137
/**
 * 引用资源路径
 */
杜庆泉's avatar
杜庆泉 已提交
138 139 140 141
export function getLogoPath(): string {
  return logo;
}

142 143 144
/**
 * 播放asset资源中的音频
 */
杜庆泉's avatar
杜庆泉 已提交
145
export function playAssetAudio() {
杜庆泉's avatar
杜庆泉 已提交
146
	
杜庆泉's avatar
杜庆泉 已提交
147 148 149
	let assetManager = getAppContext()!.getAssets();
	let afd = assetManager.openFd("free.mp3");
	let mediaPlayer = new MediaPlayer();
杜庆泉's avatar
杜庆泉 已提交
150 151 152 153 154 155
	mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
	mediaPlayer.prepare();
	mediaPlayer.start();
	
}

杜庆泉's avatar
杜庆泉 已提交
156

157 158 159 160
/**
 * 初始化应用生命周期监听
 * 
 */
杜庆泉's avatar
杜庆泉 已提交
161
export function initAppLifecycle(onLifecycleChange: (event:string) => void) {
杜庆泉's avatar
杜庆泉 已提交
162

163 164 165 166
	/**
	 * activity 销毁生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
	 */
杜庆泉's avatar
杜庆泉 已提交
167
    onAppActivityDestroy(() => {
杜庆泉's avatar
杜庆泉 已提交
168 169 170
		let eventName = "onAppActivityDestroy - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
171
    });
172 173 174 175
	/**
	 * activity 失去焦点生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
	 */
杜庆泉's avatar
杜庆泉 已提交
176
    onAppActivityPause(() => {
杜庆泉's avatar
杜庆泉 已提交
177 178 179
		let eventName = "onAppActivityPause - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
180
    });
181 182 183 184
	/**
	 * activity 得到焦点的周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
	 */
杜庆泉's avatar
杜庆泉 已提交
185
    onAppActivityResume(() => {
杜庆泉's avatar
杜庆泉 已提交
186 187 188
		let eventName = "onAppActivityResume - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
189
    });
190 191 192 193
	/**
	 * activity 回退物理按键事件回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityback
	 */
杜庆泉's avatar
杜庆泉 已提交
194
    onAppActivityBack(() => {
杜庆泉's avatar
杜庆泉 已提交
195 196 197
		let eventName = "onAppActivityBack - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
198 199 200 201
    });

}