diff --git a/App.js b/App.js index 622fc21..54a6a8c 100644 --- a/App.js +++ b/App.js @@ -1,72 +1,100 @@ -import { Pressable, StyleSheet, Text, View } from 'react-native' -import React, { useState } from 'react' +import { + Pressable, + ScrollView, + StyleSheet, + Text, + View, + NativeModules, +} from 'react-native'; +import React, { useEffect, useState } from 'react' import { EventFrequency, checkForPermission, queryUsageStats, showUsageAccessSettings, + queryEventsStats, + queryAndAggregateUsageStats, + queryEvents, + getAppDataUsage } from '@brighthustle/react-native-usage-stats-manager'; +import moment from 'moment' + const App = () => { const [dataApps, setDataApp] = useState(); - const startDateString = '2024-03-17T06:00:00'; - const endDateString = '2024-03-18T06:00:00'; + const startDateString = '2024-05-15T11:59:00'; + const endDateString = '2024-05-16T12:00:00'; const startMilliseconds = new Date(startDateString).getTime(); const endMilliseconds = new Date(endDateString).getTime(); - const functionLog = async () => { - const result = await queryUsageStats( - EventFrequency.INTERVAL_DAILY, - startMilliseconds, - endMilliseconds - ) + const [startTimeHuman, setStartTimeHuman] = useState(''); + const [endTimeHuman, setEndTimeHuman] = useState(''); + + const functionLog = async () => { + const result = await queryEvents( + // EventFrequency.INTERVAL_DAILY, + startMilliseconds, + endMilliseconds + ) - console.log(JSON.stringify(result, null, ' ')) - setDataApp(JSON.stringify(result, null, ' ')) - } + const startConvert = new Date(startMilliseconds); + const endConvert = new Date(endMilliseconds); + + setStartTimeHuman(moment(startConvert).format('DD-MM-yyyy hh:mm:ss')) + setEndTimeHuman(moment(endConvert).format('DD-MM-yyyy hh:mm:ss')) + setDataApp(JSON.stringify(result, null, ' ')) + console.info('ARRAY APP USAGE') + console.log(JSON.stringify(result, null, ' ')) + } return ( + style={{ + margin: 20, + }}> { - checkForPermission().then((res) => { + checkForPermission().then(res => { if (!res) { showUsageAccessSettings(''); } else { - functionLog() + functionLog(); } }); - }} - > + }}> + borderRadius: 5, + }}> Fetch Data Log Apps + }}> + Fetch Data Log Apps + + + Start: {startTimeHuman} + End: {endTimeHuman} + - - {dataApps} - + + + {dataApps} + + - ) + ); } export default App; \ No newline at end of file diff --git a/README.md b/README.md index f0cb2a1..af39bfc 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,52 @@ -# App Usage Tracker v1.0-beta -Log Aplikasi masih baru di Android, untuk iOS masih on ReSearch +# App Usage Tracker v1.1-beta +Log Aplikasi masih baru di Android, untuk iOS masih on ReSearch. + +## What's new? +- Modify: Get data by range data (start and end date) usage app (activity) +- Fix: View dan list with scroll ## Log Data Usage Activity Berikut contoh data yang sudah berhasil diambil dari usage penggunaan activity pada Ponsel Android ```.sh + INFO ARRAY APP USAGE LOG { - "com.google.android.gms": { - "appName": "Layanan Google Play", - "packageName": "com.google.android.gms", - "lastTimeUsed": 1715759957978, - "firstTimeStamp": 1715678603628, + "0": { "isSystem": false, - "totalTimeInForeground": 21, - "lastTimeStamp": 1715765003627 + "count": 13, + "eventType": 0, + "usageTime": 6540838, + "eventTime": 1715766609656, + "packageName": "ginlemon.flowerfree", + "humanReadableUsageTime": "1h 49m 0s", + "name": "ginlemon.flowerfree" }, - "com.burockgames.timeclocker": { - "appName": "com.burockgames.timeclocker", - "packageName": "com.burockgames.timeclocker", - "lastTimeUsed": 1715761629904, - "firstTimeStamp": 1715678603628, + "1": { "isSystem": false, - "totalTimeInForeground": 104, - "lastTimeStamp": 1715765003627 + "count": 3, + "eventType": 0, + "usageTime": 911078, + "eventTime": 1715766595356, + "packageName": "com.rnappusage", + "humanReadableUsageTime": "15m 11s", + "name": "RNAppUsage" }, - "com.android.deskclock": { - "appName": "Jam", - "packageName": "com.android.deskclock", - "lastTimeUsed": 1715630340415, - "firstTimeStamp": 1715592200825, + "2": { "isSystem": false, - "totalTimeInForeground": 179, - "lastTimeStamp": 1715678600824 + "count": 5, + "eventType": 0, + "usageTime": 632758, + "eventTime": 1715765845264, + "packageName": "com.facebook.katana", + "humanReadableUsageTime": "10m 32s", + "name": "Facebook" }, -. . . . // And more data ``` Dan berikut tampilannya - + +

Copyright © 2024 Asep Septiadi. All right reserved. Powered by `react-native-usage-stats-manager` diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 411723d..3da84b7 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -944,6 +944,10 @@ PODS: - React-Mapbuffer (0.73.6): - glog - React-debug + - react-native-usage-stats-manager (0.1.5): + - glog + - RCT-Folly (= 2022.05.16.00) + - React-Core - React-nativeconfig (0.73.6) - React-NativeModulesApple (0.73.6): - glog @@ -1167,6 +1171,7 @@ DEPENDENCIES: - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - "react-native-usage-stats-manager (from `../node_modules/@brighthustle/react-native-usage-stats-manager`)" - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) @@ -1261,6 +1266,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/logger" React-Mapbuffer: :path: "../node_modules/react-native/ReactCommon" + react-native-usage-stats-manager: + :path: "../node_modules/@brighthustle/react-native-usage-stats-manager" React-nativeconfig: :path: "../node_modules/react-native/ReactCommon" React-NativeModulesApple: @@ -1344,6 +1351,7 @@ SPEC CHECKSUMS: React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab + react-native-usage-stats-manager: 3571268b9473458a9f15d4a2af8661f8c544b0cc React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee React-perflogger: 5f49905de275bac07ac7ea7f575a70611fa988f2 diff --git a/package.json b/package.json index 1b0bb74..0f45261 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,10 @@ }, "dependencies": { "@brighthustle/react-native-usage-stats-manager": "^0.1.5", + "moment": "^2.30.1", "react": "18.2.0", - "react-native": "0.73.6" + "react-native": "0.73.6", + "react-native-app-usage-monitor": "^1.0.0" }, "devDependencies": { "@babel/core": "^7.20.0",