[Q] Acquiring Android screen exclusively - Android Q&A, Help & Troubleshooting

Hi lads,
I was wondering - is there a way that Android application can acquire screen for some time exclusively?
Consider scenario:
Android broadcasts some common intent (say: wifi state changed)
There are N>1 applications which receive the intent
Each of them starts activity
User experience is awful here, activities stacks one after another (depending on order of intent delivery) and last lucky one is being displayed on the top.
Is there a way to prevent it? Someway of locking the screen just for one application exclusively for some time?
Any help welcome, thanks.
UPDATED
Many of you may think this is noob question and guy has no idea what he is talking about - this is not the case (at least I hope so). I am pretty sure you cannot do it using official API beside monitoring other applications activity and killing them as soon as possible so that only one (mine) is on top (not sure about legal side of this operation).
Maybe I am missing something, maybe there is a way of achieving this in other way including native coding and/or Android modification (I can talk to Samsung, they will do it for me if I am kind enough ).

Related

[Q] is there an app that checks all installed or purchased apps for ICS compatibilty?

maybe either through API level, or by querying market info
Reason: i want to check on GB before I upgrade to ICS, which apps will not work.
don't know if relevant but it is for SGS II
Thx in advance
repost from here as nobody could really answer my question
can't believe I'm the only one with that issue
maybe an idea for a dev? would be willing to pay for that ;-)
I don't see why this can't be done:
-http://stackoverflow.com/questions/2695746/how-to-get-a-list-of-installed-android-applications-and-pick-one-to-run
-http://developer.android.com/reference/android/content/pm/PackageManager.html
-http://developer.android.com/reference/android/content/Context.html#getApplicationInfo()
I haven't thought through the problem just yet, but its seems to be doable. If you don't find an app soon, I will start working on a script that does it and, if successful, a proper, free software app. I am hoping the available methods won't require something as stupid as launching each app fully. But again, I haven't thought it through. Thanks for the idea btw.
EDIT:
Made a little more effort
https://groups.google.com/forum/?hl=en&fromgroups#!topic/android-developers/dXLACRIizKc
I will work on something this weekend and get back with y'all.
EDIT 2:
So it looks like I would need maxSdkVersion which I don't find in the API. Furthermore, it is strongly suggested that one not use maxSdkVersion when building an app so that doesn't sound all that useful. I have received another, much more complicated suggestion that may do what I want, but I will have to look hard at it. Looks like I'm going nowhere in my effort. Always open to suggestions. More to come later this weekend.
I'm not the sharpest tool in the shed, but I thought this was mostly a straightforward task using the API's exposure to AndroidManifest.xml. As per my previously posted link to an Android Developers discussion on the topic, my approach is dead in the water as far as I can see. I did try to find an answer though to the best of my limited ability. If anyone has or ever solves this problem (I consider it a problem) I would hope they find the this thread.
Thanks for the learning experience. I give up.
Most older apps will work fine on ICS, its pretty backwards compatible. If the app uses legacy menus the button will appear in the old lower left hand corner location instead of the upper right hand corner like apps written for ICS.
i'm no dev so bear with me if i write stupid stuff
one likely but not very promising sounding way might be to use android:targetSdkVersion as "As Android evolves with each new version, some behaviors and even appearances might change. However, if the API level of the platform is higher than the version declared by your app's targetSdkVersion, the system may enable compatibility behaviors to ensure that your app continues to work the way you expect. You can disable such compatibility behaviors by specifying targetSdkVersion to match the API level of the platform on which it's running. For example, setting this value to "11" or higher allows the system to apply a new default theme (Holo) to your app when running on Android 3.0 or higher and also disables screen compatibility mode when running on larger screens (because support for API level 11 implicitly supports larger screens)."
question though is how many apps actually use this?
However after having read this re android:maxSdkVersion "Warning: Declaring this attribute is not recommended. First, there is no need to set the attribute as means of blocking deployment of your application onto new versions of the Android platform as they are released. By design, new versions of the platform are fully backward-compatible. Your application should work properly on new versions, provided it uses only standard APIs and follows development best practices. Second, note that in some cases, declaring the attribute can result in your application being removed from users' devices after a system update to a higher API Level. Most devices on which your application is likely to be installed will receive periodic system updates over the air, so you should consider their effect on your application before setting this attribute." (taking from here) i now don't know how important my op is, but then why do all app devs release new versions "fixing things" for ICS?
One pretty significant example which actually currently will prevent my phone from getting ICS for now is that the subsonic app in the current version produces stuttering when playing audio while downloading (problem description here).
Isn't there any way to instead of searching the phone searching google play/android market instead?
Randi said:
maybe either through API level, or by querying market info
Reason: i want to check on GB before I upgrade to ICS, which apps will not work.
don't know if relevant but it is for SGS II
Thx in advance
repost from here as nobody could really answer my question
Click to expand...
Click to collapse
Here's a list of some working games/apps for ICS
Theoretically an Android app (or a combo of say App Engine and Android) could find your installed apps, seacrh Play for said apps and then scrape the page for relevant information. Doesn't sound to hard, but I didn't think about too hard either. Perhaps I will check out what useful info is on Play and how feasible scraping its markup will be. I will get back at y'all if I do.

[Q] How to ensure that a networking thread gets treated as high priority.

We have a Service with some threads dedicated to network communication. It's heartbeat-type traffic - a quick request-response a couple of times a second with small amounts of data. The problem is that a thread sometimes just stops being run for 20 or more seconds when a network request is made (that's based on calling System.currentTimeMillis() at the start and finish of the network request, and I know from measurements on the server side that the request was completed in a fraction of a second).
The advice out there suggests setting thread priorities using the Android-specific API and/or the pure Java API. It also suggests poking the service into the foreground with notifications, because Android favours foreground processes. I've tried the thread priorities, doesn't work. I'm currently trying the foreground notification trick, I don't know yet if it solves the problem.
Even if any of those techniques happen to work, it stil seems brittle - the kind of thing that could stop working with a hardware change or operating system upgrade. Is there any way of telling Android that a given thread is important enough to get attention a few times a second, and to have it treated as a requirement and not as a suggestion?
This isn't a general release application that needs to be a good citizen and let other apps have their turn: we're running it on a tablet that's dedicated just to running this application, and that we can modify in any way that's required to support the application.
Have you come across this problem before? What do you suggest?
Thanks.

[Q] Need Help with Android App Design Refinement

Hi Guys,
I am planning to make an Android App which will act as a virtual Meditation hall, where many others would have connected to, and this App, should show me the count of the number of people that are currently logged in, it must also show me, the current Idea or Notion or say, a goal, for which the people are meditating, Now, just to clarify, in case you are wondering, In Yoga, there is a practice of Group meditation with a unified thought or unified mental state, so, I am planning to emulate this real life activity, for the Yogic practitioners, also.
Anyways, here is how i imagined it would be,
Module 1: Connect to the server
Module 2: log in
Module 3: Suspension, where the user simply keeps the app on and it will update the status of the hall, i.e. whether any new members have joined in or any has left.
Module 4: exit
Now, I must say, that the only background i have is of Flash, and I am not sure how this would help me out, but I just want to know
1) how to implement modules 1,2,3,4. i.e what is the programming elements i should use, no need for detailed explanation, just to point me out to what to study, because i am just about to start learning android programming and i need to have this app up and running ASAP.
If possible, i would also like to hear how you would segment this app idea into your own modules, if you have any advice on it.
P.S Please bear with me if i had commited any of the noobish mistakes of asking in a wrong category or asking something redundant as I am new to this and It was not intentional.
Thank you

[Q] Security framework aproach (ROM for Kids)? APP or ROM?

Hello.
I am here seeking for help and advice on how to approach the development of a security framework (via APP or via hacked Android ROM to be used by kids, that could be monitored by adults (parents or legal tutors).
The idea would be to develop a (white hat) hacked ROM, that would allow the kids to communicate with their friends, but also would allow their parents to supervise/monitor in real time what their children are doing, who are they communicating with and that way protect their children. The thing is not to spy on our kids, but to be able to check regularly if there is anything wrong going on with our kids (mobbing, insults or harassment). Kids aged (10-14) could be influenced by other kids, adults, or adults simulating being kids, and on some occasions they can be tricked to do things without their parents consent/knowledge that can lead to a tricky situation.
When I was a kid, we had the telephone (wired telephone, of course) on the middle of the hallway, so all our conversations were basically family-public. The truth is that there are not many secret things a 10yo kid could/should talk about, but nowadays, it could be a little bit worrying to lend a smartphone to a kid. I think it's just as letting a kid drive a car; he can do it right, or not be able to evaluate the whole consequences of driving a car.
Talking to other parents around me, they all found very interesting the idea of having a telephone that one could lend to their son, having the kid available all the time, and with the peace of mind that you could know what's going on. Of course the kid should be aware of this, and that the telephone comms are being supervised. I think it's no big deal. "Kid, it's very simple. The telephone is mine, and if you want to use it you have to use it under my terms".
Probably, all of us working for a company, have also our communications supervised, cannot make personal phonecalls with the company's telephones, probably cannot navigate to webs looking for personal content, and we asume those rules (because neither the company's phones nor the computers are ours but our company's). It's basically the same, switching the company-employee role to a father-son one.
So, let's get to the point (technically). I am a tech-geek, linux pro-user, have compiled a few ROMs just for personal use, but don't feel capable enough of starting a project of these magnitude alone. If there is anyone willing to help, opine, or whatever, will be very welcome.
First of all, APP or ROM? I basically think that the ROM is the way to go, but I'm asking just in case someone can convince me on the contrary. I will make a poll on this question.
APP An APP could be easily downloaded and installed but would require a rooted phone, and I don't see it clearly if an APP could resolve all the needed issues (access to communications for example) and could be fairly easily uninstalled too.
ROM On the other hand, a ROM would be trickier to uninstall (basically flashing another ROM) but wouldn't be as easy to install as an APP (though the installer model of cyanogenmod could be kind of a solution). There could be an universal (if possible) independent flashable module, over whatever android ROM, or an entire ROM solution.
Features that I want to develop in this ROM (by the way, I call it 'Vigilante ROM'):
Suitable for as many devices as possible
Web interface for parents available to see device-related information
Some hack-proof measures to avoid kids bypassing the ROM's security
Alerts triggered on some events (offensive words, whatever)
Position of the mobile -just in case-
Suitable for as many devices as possible
The first thing I though was what platform should be used for this ROM. To select Android over others (iOS, Blackberry, W7) was a no-brainer. Now, the question is should we use pure Android or make a CyanogenMod fork?
In my opinion, even though every phone maker has to supply their ROM sources publicly, they usually introduce so many modifications (HTC Sense, Samsung Touchwizz and so on) that it looks more difficult to develop a common security framework over each manufacturer's version of Android, rather than using a more standardized one like CyanogenMod.
CyanogenMod already works with a wide number of devices (and a wider one if you count the unofficial supported devices), I think CyanogenMod should be the base of this ROM. If all the 'things' needed could be flash on top of any Android device, would be even better, but technically I need help with this one.
I understand that basically there should be an internal proxy setup, so that all the communications go through this internal proxy, and based on the kind of communication, we could log whatever we need. For example:
Visited URLs
Whatsapp or other messaging apps should be decrypted
Incoming/Outgoing calls/SMS
Social network activity
I know the Whatsapp protocol because I'm familiar with a project called WhatAPI. The key point to be able to intercept whatsapp messaging is a key generated and exchanged during the app install (although there are ways to later ask the Whatsapp server to renegotiate this keyword) and that's used later to encrypt all the messages between the phone and the whatsapp server.
Web interface for parents available to see device-related information
Behind every kid with a smartphone there should be a responsible adult supervising the kid -even if it's remotely-. In my idea, logs of messaging activity, incoming/outgoing calls/SMS and even the position should be available to the supervisor through a web interface.
Some hack-proof measures to avoid kids bypassing the ROM's security
That's an easy one. CRC checks on some keyfiles would guarantee that the device is not being 'counter-hacked'. Some kids are also very techie, and we should make some defences against kids trying to hack (counter-hack?) the phone.
Alerts triggered on some events (offensive words, whatever)
It could be interesting if somehow the supervisor could receive a notification whenever the kid sends/receives and offensive word, or tries to enter some special tagged website.

Android - root to run one program

How would it be possible to make an android phone run my app on startup and not let the user out of the app unless they use a password
The device is created for our app.
Not sure about from start up, but you can use the screen pinning function in Lollipop or if it's running an older version of Android then you would need to create a kiosk type app.
Good luck!
There are 3 well known 'kiosk' apps available. They are all capable of doing what you want to a greater or lesser degree. (Kioware, Mobilock and Surelock ....others are available). The problem for you is the cost, if you intend to scale up your devices. If you are putting your app on a $20 Chinese tablet, then these apps listed above all want another $15 or so to install, which doubles your costs!
I'm looking at a similar problem, and I think the true answer is a specialist ROM with most of the opsys actually stripped out. Only problem with that is...... that it is WAY beyond my talents and abilities! I would be enormously interested in how you get on (without needing to know your application specifics). Keep in touch?
Paul

Categories

Resources