How to make MediaBrowserService accessible from Android Auto? - java

I have implemented a MusicPlayerService by following the official guide from the Android Developers site. At multiple places, I have found the information that this should be enough to make my app ready for Android Auto.
But if I open that (just the phone interface because I don't have a compatible car at the moment), the list of music providers just contains Google Music and the already installed VLC media player. To verify I also downloaded, compiled and installed the Universal Music Player example, which isn't showing up either.
Do I have to enable something or even upload the app to Google Play first?
EDIT: I now tested it with the Desktop Head Unit and it works. Afterwards the service is also visible on the phone interface. But this is not the expected behavior, right?

Only apps installed through Google Play will be shown in Android Auto. If you want to test your app with the phone interface, you'll need to enable developer mode and the 'unknown sources' option in the developer settings.
https://developer.android.com/training/auto/testing/index.html#phone

Related

How to create a loopback camera through Android HAL?

1\ Regarding to Android Source Project hosted by source.android.com, Android supports multi-camera functionality. Also we have some information about how a camera driver really works in Android.
2\ As you know there is an old project called v4l2loopback that you can install and run on your Linux (it's simple if you have root access). For example you can also have fun with ffmpeg to stream a video as a dummy webcam device. (v4l2virtualdevice_android)
Qust\ What I'm really watching for is simple in logic and hard to develop. I want a solution that my Android application (that is provided as an APK) will be able to create a dummy camera and I can feed that from another source (not really important; maybe a video file). So user will be able to use original camera app, Instagram app (Live), etc ... to record the video.
I don't really know if it's necessary for device to be root or not. And if it's possible how can it be done using java or NDK?
You can do that if you replace the system camera HAL. It's quite possible if you build a custom ROM. Having root access on a known device is essentially same as having your custom ROM. But this doesn't help if your APK is installed (with root access) on a different device, even if the changes are minimal. Sure you can prepare logic that will work on many devices, but each will require separate consideration and testing.

How to make a system app in Android code

I'm trying to make a app that works like a parental control, but doing so, I got stuck in system app permissions, looking about it, I am not able to find anything that tells me that it is possible to do without using a specific ROM for my app. But in the Play Store, has a lot of apps that makes that. In my app, every time that I try to block connectivity, using ConnectivityManager, he gives me:
java.lang.SecurityException: Neither user 10228 nor current process has android.permission.MODIFY_PHONE_STATE.
And the permission is in the manifest. In the manifest, he gives me the error:
Permission is only granted to system apps.
So, I'm asking, how to make a system App in Android code without root the device?
how to make a app that it is a system app in Android code without root the device?
The closest thing to what you describe is for you to create your own custom Android ROM, where your app is pre-packaged as a system app, and convince people to install your ROM on their device, replacing their existing Android installation.
Otherwise, this is not possible. This should be obvious: if everyone could write an app that made themselves be a system app, there would be no value in having a distinction between regular apps and system apps.

'Authentication is required. You must sign into your Google account' when testing IAB

I have been developing a simple game for android and I have run into a number of issues while using in app billing. To perform IAB, I use the utility classes provided in the TrivialDriveExample here. I have copied and modified accordingly the code in the MainActivity class provided in this example to use IAB. I have also followed the documents on the android developer page describing how to set up IAB on the developer console.
However, when trying to test the purchase the product in the app using the following code, I get the error described in the title of the question.
helper.launchPurchaseFlow(game.getActivity(), sku, RC_REQUEST, getPurchaseListener(game));
(where helper is an instance of the IabHelper class provided in the google code link above and RC_REQUEST is a constant set to 10001 as shown in the MainActivity in the trivial drive example, and where sku is the sku of the product - as seen in the developer console). Here, getPurchaseListener returns an instance of an IabHelper.OnIabPurchaseFinishedListener (provided in the util package of the example code).
What I am certain of:
The sku is correct and exactly the same as the one provided on the developer console.
The APK that has been uploaded to the developer console as alpha is identical to the one installed on the device (and is signed with my developer key not the debug key).
My account and all used testing accounts are in both the google group registered for alpha testing and the list of accounts that receive the LICENSED response from the developer console.
Every object used in the code != null
I can test Google Play game services on my app (achievements & leaderboards).
It is to do with the app I am developing as IAB works for other apps (tested with Clash of Clans and Infectanator).
What I have tried:
Removing my developer google account from my device, leaving only a test account (+waiting overnight without my developer account installed on my device and then testing it in the morning with my test account).
Clearing all google play data and caches.
Restarting my device/reinstalling the application.
I also get another error when trying to use android's test purchases (using the sku 'android.test.purchase'). I get this:
Error while retrieving information from server [DF-DFERH-01]
As mention above, I have cleared google play data, removed my account and added it again, restarted my device and reinstalled the app. Again, this happens only on my app currently in development and not in any other apps with IAB.
EDIT
Just to note, I have looked through other people's questions regarding this error and tried the solutions provided to no avail.
The application with IAB integrated has to be Published for Play Store to enable the billing for it, it won't work so long as it's in Draft -- documentation seems to not be very clear about this.
So, make sure you actually publish the app (don't worry, if you've only got the alpha and/or beta version, it won't be listed in Play Store for simple mortals) and, as usual, allow some time for Play Store to absorb it.
Same answer here

How to run Java app in Android

Is it possible to run java app (jar) in my android application? Because I need to create PDF, the problem is if I generate PDF in android, only can show with small image, if it contains large image in many pages, it will be error. So I think, I can generate PDF in java and then included to android app.
Concernig the mentiones app JBED:
Well honestly, I could not find any credible source for this tools JBED, so I would really be very cautious (e.g. who is the developer?)
In the manifestfile (in Androidmanifest.xml, where every app has to state what rights it needs to run, see How to view AndroidManifest.xml from APK file?) there are many rights mentioned (what could be necessary, as the app wants to run as an emulator), so a java application might want to send an SMS, record audio, take pictures and place calls -- so the emulator would need those rights as well.
But then the app also registers the "android.intent.action.BOOT_COMPLETED" event (i.e. autostart after boot) and this would go against every description of the tool.
Ah yeah and giveaway: The apk has a folder "certs" that has some (root-)certificates. But those are not the real certificates of the authorities, e.g. Versign. If one installs the app and by that those certificates the trust you might have in https-connections is lost because those who made the fake certificates can create own, false certificates that your phone would trust.
I assume (or am pretty sure) this is a spy tool, but I could be wrong. The (rare) testimonials that claim the tool ran perfectly will probably be the same person that posted the tool under a different name.
Andreas
You can import java Third-party libraries into Android app, follow the steps here.
I am not sure whether it will work,but just try.
If your program is a console program, the answer is yes.
Install Jvdroid from Google play. Click terminal and then write this command: java -jar YourJarFileName.jar
The simplest way would be to some install terminal emulator and then install java and then you can run java apps on standard java. You can even install full Linux distro with x server without rooting the phone, then connect to it from x client and you have Linux desktop on android. Once I've even installed eclipse for java development on it and everything worked. I tested this setup last time in 2014, but I'm pretty sure you can do this nowadays as well. The app with Linux I get from play store as well app for the x client. The app I used back then was "Debian no ROOT" or smthg like this. You need to check what's currently available to make this setup in Google Play store according to your android version and your preferences. Last time I've checked there was a lot of different tools for this kind of task. Lastly I've even successfully installed TF and keras on my android phone using terminal emulator.
You can use JBED. JBED is an .apk Android application which run java games and app on your android Device. JBED is a java android emulator, by using
this application we can install .JAR/.JAD/Java/J2ME/MIDP app on android phones.
You can do it quite easily as there are many ways to run java apps on android. Specific application called Java Emulators can do it quite easily.
These are four most popular java emulators for android viz, JBED, PhoneME, Jblend and NetMite. These are arranged in order of their preference. You can use phoneme for non rooted device, however if your device is rooted try any of the remaining three applications.

Updating android APK not via play store

First of all, I'm sorry I don't speak very good english. I have a thesis project to make android app similiar like logo quiz using java. Basicaly, I have to make the admin site of this app or make it updatable not via play store. I'm going to put the newest APK version in a website host. Does anyone here know how to make it work like that? Or maybe you have another idea to make the admin site? please tell me
The update also must be installed. The user will check is there any newest version. Then user will download it and the downloaded APK will be automaticaly installed
This is not easy to do. The only option you have is to write some server side code to let a client know what the latest version is. The client can trigger a local notification and alert the user that a new version is available.
Facebook managed to do what you're asking but I'm sure a lot of engineering effort went into it.
[EDIT]
Google has updated their policy to forbid dynamic updates.
“An app downloaded from Google Play may not modify, replace or update
its own APK binary code using any method other than Google Play's
update mechanism.”
FYI Without uploading on play store, user will never come to know about the updates of your app.
Or
There must be some kind of notification you should implement in your admin and send to your users using the app, and through that notification you should ask user to download updated APK from your web.

Categories

Resources