index.uts 5.3 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
import logo from "../../static/logo.png";
杜庆泉's avatar
杜庆泉 已提交
10
import PackageManager from "android.content.pm.PackageManager";
杜庆泉's avatar
杜庆泉 已提交
11 12 13 14 15 16 17 18 19 20

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

21

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


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

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

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


74 75 76 77
/**
 * 实现一个添加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
杜庆泉 已提交
78 79 80 81
class AddUIRunnable extends Runnable {

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

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


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

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

    }
};

101 102 103 104
/**
 * 实现一个移除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
杜庆泉 已提交
105 106 107 108
class RemoveUIRunnable extends Runnable {

    override run():void {

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

    }
};

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

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


杜庆泉's avatar
杜庆泉 已提交
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159



/**
 * 引用资源路径
 */
export function getMetaConfig(): string {
	//
	let packageName = getAppContext()!.getPackageName();
	let appInfo = getAppContext()!.getPackageManager()!.getApplicationInfo(packageName,PackageManager.GET_META_DATA)
	
	let metaData = appInfo.metaData
	if (metaData == null) {
		 return "";
	}
	let adId = metaData.getString("DCLOUD_READ_PHONE_STATE")
	if (adId == null) {
		 return "";
	}
    return adId;
}



160 161 162
/**
 * 引用资源路径
 */
杜庆泉's avatar
杜庆泉 已提交
163 164 165 166
export function getLogoPath(): string {
  return logo;
}

167 168 169
/**
 * 播放asset资源中的音频
 */
杜庆泉's avatar
杜庆泉 已提交
170
export function playAssetAudio() {
杜庆泉's avatar
杜庆泉 已提交
171
	
杜庆泉's avatar
杜庆泉 已提交
172 173 174
	let assetManager = getAppContext()!.getAssets();
	let afd = assetManager.openFd("free.mp3");
	let mediaPlayer = new MediaPlayer();
杜庆泉's avatar
杜庆泉 已提交
175 176 177 178 179 180
	mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
	mediaPlayer.prepare();
	mediaPlayer.start();
	
}

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

杜庆泉's avatar
杜庆泉 已提交
182 183 184



185 186 187 188
/**
 * 初始化应用生命周期监听
 * 
 */
杜庆泉's avatar
杜庆泉 已提交
189
export function initAppLifecycle(onLifecycleChange: (event:string) => void) {
杜庆泉's avatar
杜庆泉 已提交
190

191 192 193 194
	/**
	 * activity 销毁生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
	 */
杜庆泉's avatar
杜庆泉 已提交
195
    onAppActivityDestroy(() => {
杜庆泉's avatar
杜庆泉 已提交
196 197 198
		let eventName = "onAppActivityDestroy - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
199
    });
200 201 202 203
	/**
	 * activity 失去焦点生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
	 */
杜庆泉's avatar
杜庆泉 已提交
204
    onAppActivityPause(() => {
杜庆泉's avatar
杜庆泉 已提交
205 206 207
		let eventName = "onAppActivityPause - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
208
    });
209 210 211 212
	/**
	 * activity 得到焦点的周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
	 */
杜庆泉's avatar
杜庆泉 已提交
213
    onAppActivityResume(() => {
杜庆泉's avatar
杜庆泉 已提交
214 215 216
		let eventName = "onAppActivityResume - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
217
    });
218 219 220 221
	/**
	 * activity 回退物理按键事件回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityback
	 */
杜庆泉's avatar
杜庆泉 已提交
222
    onAppActivityBack(() => {
杜庆泉's avatar
杜庆泉 已提交
223 224 225
		let eventName = "onAppActivityBack - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
226 227 228 229
    });

}