Java android track usage time installed app - java

I need to track usage time of all installed apps, with java, in android OS.
For example, this app is very very similar: https://play.google.com/store/apps/details?id=com.agrvaibhav.AppUsageTracking
Is there a way to do this?

First of all you can use the android.app.ActivityManager to retrieve phone statue and running processes. An excellent example of doing this could be found here,
Java Code Examples for android.app.ActivityManager
You can also monitor the foreground activity to determine the Running tasks. Example here,
how do android monitor usage applications work
Lastly you can create your own service to detect each running process and their usage. A complete example of this procedure could be found here,
App to monitor other apps on android

Related

Single application custom Android ROM

I find this question a couple places on the web, but never with a good answer. Let me be specific in the questions asked.
I want to build a custom Android ROM which only features one app. This app is not to interact with any hardware (per now). This app will be launched on the start up of the device. No locked-screen. The device will have to restart if the app malfunctions.
A resource told me that you can change the launcher app of the ROM.
-> Does this mean that the home screen, the one which displays all apps on our phones, is merely another app? If so, can you simply change the launcher app as it is stated here? What were to happen if this app fails?
If this is the case, it would solve the entire issue.
If not, how do you go about making this sort of project? It includes
Making an app on AOSP
Refuse users to leave the app or interact with anything else
Making this app part of the boot-up process
Remove locked screen
Make the app a dependency of the OS (to force shutdown if malfunction)
Thanks in advance for any replies
I just found Android have a topic about dedicated devices (formerly called corporate-owned single-use, or COSU) are a subset of company-owned devices that serve a specific purpose. maybe that can meet your requirement.
BTW, After into the sub-topic lock task mode that mentions about set DPC whitelist APPs and the device policy controller (DPC) needs setup by other steps.... FYR~

How do "add-ons" work for native apps?

I am designing an app for Android, iPhone/iPad and Windows Phone using GWT and PhoneGap. GWT will allow me to write the entire app in Java (my strong suit, unlike JavaScript or CSS) and will translate it into cross-browser JavaScript/AJAX. PhoneGap will then wrap that resultant JavaScript and turn it into a native app for each of the three platforms mentioned above.
I would like to have a "plugin-oriented architecture", whereby users can optionally purchase (or qualify for through other means) "add-ons" (plugins/extensions) that will enhance the functionality of the app.
Normally I would accomplish this by using the Java Simple Plugin Framework (JSPF) and allow users to download plugin JARs as they paid for them. These plugin JARs would then be added to the classpath of the main app so that the next time it starts and scans the classpath for plugins, it finds them and loads them.
Is this possible with native apps? I don't believe I can deploy anything other than APK, IPA and XAP (Android, iPhone and WinPhone respectively) files to these marketplaces.
In Java-land, this would be like having to download a "base" app in the form of an executable JAR (containing its own main method), and then having to download a "plugin" app that is also an exectuable JAR, and somehow get the two to behave like a normal plugin architecture (which would be if you have 1 exectuable JAR base app and then 1+ plugin non-executable JAR libs).
So I ask: how do add-ons work for native apps from a deployment/download perspective? How do you get 2 or more APKs/IPAs/XAPs to communicate with each other on the client-side? If not possible, how do native app developers handle add-ons (I know they exist, I've seen them!)? Thanks in advance!
as for iPhone - the only way is to implement the additional features and have them disabled until the user purchases in app to unlock the feature.
In Android you can have apps communicate with each other so that the user can just load add-on apps that provide only the add-on functionality. For more detail on this.. android communication between two applications
WP8 - I do not yet have experience
Although I am not a core Android Developer, here are some suggestions from my experience with Android till now:
One possible solution for Android is to use Updates for application. One way to achieve this is using a Background Service which checks for updates whenever app starts or use GCM (Google Cloud Messaging) to push update messages to the app. Second option is much better as you can provide instant update to the user ,on per device basis (a user can have multiple devices), as soon as he/she has bought your add on feature. After the user has got the update message you can download the whole app with new feature and update app on the device. Of course in this case you need to backup the existing data of the app and restore after installation of updated app.
I don't know if this thing can be done but it would be also be an good option in my opinion if you can provide a legitimate user, who have bought the particular add on, an updated app through Android Market.
Another way is to create each add on as a Service and then let the main app can detect (or bind) those services at startup and if they are available, your app can communicate with them easily. You can even call the UI portion of the newly deployed add on from your main app by using Intents and BroadcastReceivers.
You may also find this useful as far as Android is concerned:
However, there are ways for an application to share data with other
applications and for an application to access system services:
It's possible to arrange for two applications to share the same Linux
user ID, in which case they are able to access each other's files. To
conserve system resources, applications with the same user ID can also
arrange to run in the same Linux process and share the same VM (the
applications must also be signed with the same certificate).
Hope this gives some useful information to you.

Reasons an app could work on android 2.3 and fail on android 3.0

I have written an app that appears to work faultlessly on android 2.3. I have just been told by email that my app crashes (immediately on startup) on android 3.0 tablets. Unfortunately I do not have access to such a device.
To try and make my app as crashproof as possible I have been employing Lint and FindBugs. My program does use more than one thread and Findbug reports several instance of "Inconsistent synchronization" because different threads may be reading certain data at the same time. I beleive this not to be a problem because at the times the data is being read it should not be in the process of being altered. It occurs to me though that perhaps android 3.0 has some built-in detection of such instances?
I am interested in any other thoughts on what kind of things would cause a program to work on 2.3 but not on 3.0.
I had a similar problem with an app.
My issue was due to the introduction of a new exception when I attempt to perform a networking operation on the main UI thread.
Please refer to How to fix android.os.NetworkOnMainThreadException? to have more explanation.
I also used the Android emulator with the Android 3.0 API to reproduce the bug.

How to monitor one application using another application in android operating system

I want to monitor(I want to check whether one currently running application fetches my contacts details) all installed application of android operating system using one application. Can any one help me to sort this out or is possible to create such application in android.
I want to monitor all installed application of android operating system using one application.
What is your definition of monitor?
To know when packages are added refer to this
To know which applications are running in the fg/bg use this
To know what the CPU speed and other stats use adb shell ps. Yes, you can run adb commands from an apk
The ActivityManager class is quite helpful
You can look at this topic on androidforums with similar question. Maybe it helps to begin. Or you can look at this helper function

Block an android device

I'm developing an app for Android Tablet PC and I need to allow user to run only exact applications.
1. Is there any way to deny other applications execution?
2. Is it possible to show some block screen with password prompt and deny user to run anything until the authentication will be passed?
Unfortunately I haven't find any info :(
If you're talking applications (and not just activities within an application) then it would not be "safe" for google to allow you to block other programs from running. If you had your own (non-stock) version of Android that you were deploying on company devices for example, then perhaps you could do that, but if you're just making an app, it would not be wise to have an app prevent other ones from running. You could perhaps set up some kind of shared memory resource with some flags that other apps could look at upon launching to see if they should proceed or not, but that is about it.
You would have to write a replacement for the launcher & app drawer so that you can manage the application launch process. There is a demo for creating a launcher in the SDK, and a short thread about it here

Categories