How do i change the android´s system font configuration?
O know that it´s a kind of low level configuration, but i´m not sure where it is located.
The idea is to make an option to set the default size, for those with vision disabilities.
I need something changeable, not hard coded.
Additional Information:
-I will generate a build of the System, so would be no problem changing any system file, class, or anything necessary.
-SDK 2.2 - Froyo - API Level 8
While this is indeed a low-level config change, it isn't really that simple. First, you need to have a rooted device with BusyBox installed. XDA developers made an app (search Type Fresh in the market) that changes the default font for you. I don't believe there's an easy way to do it manually, and AFAIK it's impossible without root and busybox.
Related
I want to make changes to AOSP multi-window feature.
I would like to know how do we make those Changes?
Also, I would like to know after making changes to AOSP how do I flash the modified AOSP on my device.
Flashing AOSP based ROM will require device vendors. Then you need configure Your device and create custom make files. All about adding new device is here. I think You should follow these instructions, apply Your changes, run system on emulator and then try to extract Your vendors.
KitKat had the Settings > WiFi > Advanced WiFi option to set the priority as shown.
This isn't present on my Nexus Lollipop and Marshmallow devices. I see there is an App available, but I'd like to know if there is some onboard way I missed to manage these, and if not, what the thinking was behind its removal.
This works on my CyanogenMOD 13 device, which I have come to believe should work on Lollipop and Marshmellow devices as well:
In your Wi-Fi settings, tap the overflow icon, select "Saved networks". Tap the overflow icon again, disable "Automatic priority". You can now re-order your networks by dragging the signal icon up or down.
Let me know how/if it works for L & M!
This is not exactly ordered prioritization, however I found I was able to give preference to one SSID over another by using the data usage setting. By setting HomeWiFi as Unmetered and FreeCableProviderWifi as Metered my phone effectively prioritizes my home network. This solved my problem so I hope this solution helps other even if it doesn't directly answer the question
I realize this is an old post, but looking for something else I stumbled upon this:
On a rooted device you can manually edit the wpa_supplicant.conf file, usually stored in data/misc/wifi. Use a standard text editor.
In this file all saved networks are described in structures like
network={
ssid="network-name"
other_key=other_value
priority=priority-value
}
Higher values in priority mean higher priority. Priorities don't have to be unique. Only if you know that you have multiple stored networks for the same location you should consider giving them different priority values like 0 for the least wanted network and 9 for the most wanted one; you get the idea.
Tools:
There are also some tools available for rooted phones that can help you here. One that I use is GravityBox offering a busload of very helpful tweaks and tools for your phone. You need to have the XPosed framework (>> http://repo.xposed.info/) installed to use GravityBox (>> http://repo.xposed.info/module-overview, then search for GravityBox; be sure to pick the version suitable for your Android version)
There are other tools as well but I can't say anything about them. My opinion is: be careful with tools that are abler to fiddle with sensitive data; if they can change priorities they also can read the network passwords stored in wpa_supplicant.conf...
I was trying to achieve this on stock Nougat 7.1.1 on a Nexus 5x. I edited the properties in the /data/misc/wi-fi/wpa_supplicant.conf file using a text editor. It worked perfectly. You need root access to edit this file however.
I want to modify the system apps running on my specific phone. I am stumped about some important steps on how to do that - see my questions further below.
N.B.: I am not interested in deploying these modifications to other phones. Instead I want to play with the original code and improve it. Hence "create your own system app" is no sufficient answer.
Background
I am just starting to get into Android development (have sufficient Java knowledge, though). There are plenty of great tutorials out there (e.g. here and here) but they all seem to cover user application development. I'm more interested in getting (a little) "closer to the metal". Unfortunately I am unable to find good sources teaching how to do that.
Example
As an example let's say I want to modify how the built-in brightness control works (e.g. changing the minimum) or want to add features to the call screen (e.g. "Send SMS instead" when the line is busy).
Specific Questions
I obviously need these things to get started...
Sources
The sources for (parts of?) the OS running on my phone. This is the part that confuses me the most. Can I just download the official sources or is it likely that my vendor made modifications?
In my specific scenario (I use a Fairphone), could those modifications be contained in any of these sources:
some core apps deployed by the vendor
the image binaries (some way down the page)
sources for the Linux kernel and some other libraries
Tools
I really hope to stay in Java-land. But either case I need a development (I hope to use Android Studio or Eclipse ADT) and a debugging environment (I hope the Android Virtual Devices suffice).
Is it a valid assumption that I can use those tools for system apps or are they usually implemented in C?
Process
Assuming I can download the official sources and get started with, e.g. Android Studio. As opposed to developing a user app, do I have to do anything special to emulate the modified system app on AVD?
I'm asking because I assume that AVD already runs an unmodified version of that very app.
I am just starting to get into Android development (have sufficient Java knowledge, though). ... I'm more interested in getting (a little) "closer to the metal".
You can of course follow your own bliss, but you may find it pretty frustrating to learn Android development by hacking on the OS itself. You'll find yourself doing a lot of OS debugging and working with harder-to-use tools than normal.
Example
As an example let's say I want to modify how the built-in brightness control works (e.g. changing the minimum)
I realize this is just an example, but this could be a tough one, because there are a lot of things that contribute to brightness control -- there's the app with the UI that sets it, but that talks to the framework and ultimately the driver for the hardware that actually deals with brightness curves for the display, in coordination with the ambient light sensor.
or want to add features to the call screen (e.g. "Send SMS instead" when the line is busy).
There's a dialer app, but implementing a feature like that will be...difficult, provided it's even feasible. I don't know offhand whether that sort of call state is available to the API.
Specific Questions
I obviously need these things to get started...
Sources
The sources for (parts of?) the OS running on my phone. This is the part that confuses me the most. Can I just download the official sources or is it likely that my vendor made modifications?
If you're replacing system apps, you'll need to run an OS signed with debug keys; you don't have access to the signing keys for the installed system apps on a retail build of the OS that would enable you to replace them. That will mean either getting a debug-keys installation or building it yourself from source, and flashing it to your phone. I would most strongly discourage you from using your daily phone for this sort of work -- you don't want it to be bricked when you need to receive an important call.
If you're not running a Nexus phone, then yes, your vendor has made modifications. The system apps are probably modified, and you almost certainly won't have access to the closed source of those apps. Also, there will be closed-source device drivers that are essential to the operation of the OS that you won't have access to. If you're trying to get AOSP Android up and running on such a device, as an individual hacker it's at best very, very difficult. If you're willing to use something like CyanogenMod, you could look to see if (and to what extent) they support your hardware.
If you are running a Nexus phone, then it's a goal of the AOSP project to try to have the OS bootable on select Nexus devices, though you won't necessarily enjoy the fullest functionality of the retail OS build, depending on the state of drivers -- even Nexus phones can have closed-source drivers and bits that make life more, um, exciting for building with AOSP.
In my specific scenario (I use a Fairphone), could those modifications be contained in any of these sources:
some core apps deployed by the vendor
Almost certainly
the image binaries (some way down the page)
Not sure what you mean by that
sources for the Linux kernel and some other libraries
It's unlikely there are significant modifications to the kernel itself, though vendors sometimes do...interesting...things with system configuration. I already mentioned device drivers. Vendors also have custom implementations/modifications of some framework APIs.
Tools
Vendor-specific tools are rare.
I really hope to stay in Java-land. But either case I need a development (I hope to use Android Studio or Eclipse ADT) and a debugging environment (I hope the Android Virtual Devices suffice).
Much of what you want to do can probably be implemented in Java, though it depends on how close you're getting to the hardware which can be difficult to know.
Is it a valid assumption that I can use those tools for system apps or are they usually implemented in C?
The "system apps" are implemented in Java, but again, you sort of have to know where the dividing line is.
Process
Assuming I can download the official sources and get started with, e.g. Android Studio. As opposed to developing a user app, do I have to do anything special to emulate the modified system app on AVD?
That's actually different, because you're dealing with an emulator system image instead of a phone image. The emulator system images are completely open source, and you can build them from AOSP.
I'm asking because I assume that AVD already runs an unmodified version of that very app.
That's correct.
To come back to my initial point, if you read between the lines of what I'm saying, I won't tell you it's impossible, but the difficulty ranges from freakin' tough on the easy end to spend-years-of-your-life on the hard end. If you really want to proceed, your best bet may be to buy the phone that's best supported by CyanogenMod and work that angle; there's a more active developer community there to help you. I know you're more excited about trying to customize the OS than you are in making a user-space app, but you'll experience less frustration with the latter than the former.
I followed the guide on android.com and compiled the source code. Now it runs well in the emulator. There are some .img files so I think it may be viable to flash them on real devices.
But I see on the guide there is a 4th step, which is to compile some device-specific proprietary files. But my device is not on their list. So what extra work needs to be done if I want to flash the .img files to real devices rather than the emulator? Will the real devices get bricked? Thanks.
well -- that is the "difficult" part of making a custom ROM for a device. You need to have a complex understanding of the particular hardware that you're building for, and adjust and update the codebase accordingly.
That said -- a real device will (probably) not get bricked, but you will need to use the recovery image to put a working ROM back on to use the device again. Make sure you have a rooted device and a decent recovery on it (Clockworkmod)
I am new android development and learning on emulator. What rooting of device means ?? it something like jail break for Iphone. How can i root emulator and why i need root a device ?
Rooting basically is giving the standard user root privileges, so that the normal user can do things that only the super user could normally do. On android devices this means being able to change several things, such as being able to modify the frequency of the processor, being able to install new firmware/ different versions of android that the manufacturer doesn't offer, or execute applications like the ones in here : http://androidforums.com/droid-x-all-things-root/131944-favorite-root-applications.html
It is fairly easy to do and very straightforward process in most of the android devices. You don't need to root the emulator, it is already rooted but you should better not be developing apps that require root access if you want to put them in the market -most of the people do not have a rooted device-.
Yes it is.
Because you perhaps want to use Android 2.3 on a phone where the manufacturer only supports 2.2 so far.
You do not need to root your device to do SDK development with it. You will never need this to build Android applications.
You root a device by exploiting a security hole in order to get a full access to the system. It then allows you to escape security to change system files that should not be modified.
It is a bit like jailbreaking. Rooting can allow you to install modified versions of your OS.
You are always root in the emulator, you do not need to "root it".