index.uts 3.8 KB
Newer Older
杜庆泉's avatar
杜庆泉 已提交
1

杜庆泉's avatar
杜庆泉 已提交
2
import { getUniActivity,getAppContext } from "io.dcloud.uts.android";
杜庆泉's avatar
杜庆泉 已提交
3 4 5 6 7 8
import Rect from "android.graphics.Rect";
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
杜庆泉 已提交
9 10 11
import Runnable from 'java.lang.Runnable';
import Exception from 'java.lang.Exception';
import MediaPlayer from 'android.media.MediaPlayer';
杜庆泉's avatar
杜庆泉 已提交
12

杜庆泉's avatar
杜庆泉 已提交
13 14 15
/**
 * 定时任务参数封装
 */
杜庆泉's avatar
杜庆泉 已提交
16 17 18 19 20 21
type TimerOptions = {
  start: (res: string) => void;
  work: (res: string) => void;
};


杜庆泉's avatar
杜庆泉 已提交
22 23 24
/**
 * 执行延时任务
 */
杜庆泉's avatar
杜庆泉 已提交
25 26 27 28 29 30 31 32 33
export function doTimerTask(opts:TimerOptions) {
	opts.start('doTimerTask start');
	setTimeout(function() {
		opts.work("doTimerTask work");
	}, 2000);
  
  return { name: "doTimerTask" };
}

杜庆泉's avatar
杜庆泉 已提交
34 35 36
/**
 * 执行周期任务
 */
杜庆泉's avatar
杜庆泉 已提交
37 38
export function doIntervalTask(opts:TimerOptions) {
	
杜庆泉's avatar
杜庆泉 已提交
39
	let taskRet = setInterval(function() {
杜庆泉's avatar
杜庆泉 已提交
40 41 42 43 44 45 46
		opts.work("doIntervalTask work");
	}, 2000);
	opts.start('doIntervalTask start');
  
  return { name: "doIntervalTask",taskId:taskRet};
}

杜庆泉's avatar
杜庆泉 已提交
47 48 49
/**
 * 清除周期任务
 */
杜庆泉's avatar
杜庆泉 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62
export function clearIntervalTask(taskId:number) {
	
	clearInterval(taskId);
  
  return { name: "clearIntervalTask"};
}



class AddUIRunnable extends Runnable {

    override run():void {
		
杜庆泉's avatar
杜庆泉 已提交
63 64 65
        let textView = new TextView(getUniActivity())
        textView.setText("HELLO WORLD");
        textView.textSize = 30.0.toFloat();
杜庆泉's avatar
杜庆泉 已提交
66
        textView.setBackgroundColor(Color.RED)
杜庆泉's avatar
杜庆泉 已提交
67 68
        textView.setTag("helloText")
        textView.setGravity(Gravity.CENTER)
杜庆泉's avatar
杜庆泉 已提交
69

杜庆泉's avatar
杜庆泉 已提交
70
        let decorView = getUniActivity()!.window.decorView;
杜庆泉's avatar
杜庆泉 已提交
71 72


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

杜庆泉's avatar
杜庆泉 已提交
77
        frameContent.addView(textView,layoutParam)
杜庆泉's avatar
杜庆泉 已提交
78 79 80 81 82 83 84 85

    }
};

class RemoveUIRunnable extends Runnable {

    override run():void {

杜庆泉's avatar
杜庆泉 已提交
86
        let decorView = getUniActivity()!.window.decorView;
杜庆泉's avatar
杜庆泉 已提交
87
        let frameContent = decorView.findViewById<FrameLayout>(android.R.id.content)
杜庆泉's avatar
杜庆泉 已提交
88 89 90
		
		let targetTV = frameContent.findViewWithTag<TextView>("helloText")
		frameContent.removeView(targetTV)
杜庆泉's avatar
杜庆泉 已提交
91 92 93 94 95 96

    }
};


export function addViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
97
    let uiRunable = new AddUIRunnable();
杜庆泉's avatar
杜庆泉 已提交
98 99 100 101 102
    getUniActivity()!.runOnUiThread(uiRunable)

}

export function removeViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
103
    var uiRunable = new RemoveUIRunnable();
杜庆泉's avatar
杜庆泉 已提交
104 105 106 107
    getUniActivity()!.runOnUiThread(uiRunable)
}


杜庆泉's avatar
杜庆泉 已提交
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
import logo from "../../static/logo.png";

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


export function getLogoPath(): string {
  return logo;
}


杜庆泉's avatar
杜庆泉 已提交
124
export function playAssetAudio() {
杜庆泉's avatar
杜庆泉 已提交
125
	
杜庆泉's avatar
杜庆泉 已提交
126 127 128
	let assetManager = getAppContext()!.getAssets();
	let afd = assetManager.openFd("free.mp3");
	let mediaPlayer = new MediaPlayer();
杜庆泉's avatar
杜庆泉 已提交
129 130 131 132 133 134
	mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
	mediaPlayer.prepare();
	mediaPlayer.start();
	
}

杜庆泉's avatar
杜庆泉 已提交
135 136


杜庆泉's avatar
杜庆泉 已提交
137 138


杜庆泉's avatar
杜庆泉 已提交
139
export function initAppLifecycle(onLifecycleChange: (event:string) => void) {
杜庆泉's avatar
杜庆泉 已提交
140 141

    onAppActivityDestroy(() => {
杜庆泉's avatar
杜庆泉 已提交
142 143 144 145
		
		let eventName = "onAppActivityDestroy - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
146 147
    });
    onAppActivityPause(() => {
杜庆泉's avatar
杜庆泉 已提交
148 149 150
		let eventName = "onAppActivityPause - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
151 152
    });
    onAppActivityResume(() => {
杜庆泉's avatar
杜庆泉 已提交
153 154 155
		let eventName = "onAppActivityResume - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
156 157
    });
    onAppActivityBack(() => {
杜庆泉's avatar
杜庆泉 已提交
158 159 160
		let eventName = "onAppActivityBack - " + Date.now();
		onLifecycleChange(eventName);
        console.log(eventName);
杜庆泉's avatar
杜庆泉 已提交
161 162 163 164
    });

}