how to understand the wifi code flow in android? - android

I am new to the android. I just want to understand the Wi-Fi code flow in android. I have already grasp some basic stuff about it, need some more detail about it.

This is a good starting point..
https://source.android.com/devices/tech/connect/wifi-overview

Hi thanks for the Question.
before i answer your question i wanted some calrification?
you want to learn wifi for app developement or you want understand wifi has a whole module?
if your perpose is to understand has a whole from app layer to driver.
i would suggest you to look into this
https://www.amazon.com/802-11-Wireless-Networks-Definitive-Guide-ebook/dp/B005WZ0SXW
even before you jump into code.
has far has the code is concerned
these are few things which i would suggest you to look into.
1)Wpa_supplicant is an open source project source code, which was modified by Google to join theAndroidmobile platform.
What is wpa_spplicant ?-->start from here .
practice how to use wpa supplicant from cmd line.
2)once you have got the grip on wpa_supplicant wireless network configuration form cmd line or linux terminal.
3)next will suggest you to look into android architecture the one before android N and after Treble.
4)once you are familiar with architecture,please look into state machine and how they are making state transistion form one state to other.-->in framework code from android M(easy compared to latest).
and so on .these are just few things which can help you ,but there is a lot more happening and its vast.

Related

How to create a tv tuner library for android?

I have a K1 Plus android box which have a built-in dvb-t2` and dvb-s2 tuner in it. I want to create an app that gets and shows the channels from those tuners.
At first, I found about android's TV Input Framework(TIF). The sample app keeps crashing by calling a method that gets the available inputs of the device. Then, found out that it only work for real Android TVs. I looked for android libraries for that android box but didn't find anything. I looked for c libraries that can access the tuners but didn't find anything as well. I looked for code on how to access the hardware components of an android device and didn't find anything. I recently found about https://opencv.org/. I haven't read everything about it yet so I don't really know how to use it.
I found about https://git.linuxtv.org/v4l-utils.git from an answer to a SO question but it seems like it can only be used after installing it to an OS. I was able to compile it using CMake on android but it got missing header files.
I also found http://android4tv.iwedia.com. Unfortunately, it's also using TIF.
I'm trying to create something like kodi but I found out that it isn't really the one that gets the channels but kodi is getting it from a supported iptv box. I have zero knowledge about writing C but I'll try to make the code.
This is the box btw. http://www.videostrong.com/S905D+DVB(KI%20PLUS)/55.html
From my research, I found about HAL(Hardware Abstraction Layer). Do I need that for making my C code?
Update:
After months of research and not finding any quick way to implement a tv tuner library, I returned to my bookmarks from previous research. One of them is this. The first step from that SO answer is do a ls /dev/dvb/ on the device. Because I need to do it on the android box itself, I researched about android terminal apps and found Termux. Then I did the ls /dev/dvb/ command on Termux and it told that the resource was not found or it did not exist. Then I tried to just do a ls /dev/ command and luckily I got results. There's quite a lot of them and I found something related to dvb.
The dvb related results were:
dvb0.demux0
dvb0.demux1
dvb0.demux2
dvb0.dsc0
dvb0.dsc1
dvb0.dvr0
dvb0.dvr1
dvb0.dvr2
dvb0.net0
dvb0.net1
dvb0.net2
I can post the whole list but I'll post this more related (I think) results.
The results are quite different than the example of the link above because they only used dvb and not dvb0.
UPDATE:
I might use a usb tv tuner now based on a suggestion to me.
UPDATE:
Is there a list of standard and tv tuner related usb byte[] commands that I can look at? I already saw some but they are mostly for FTDI, serial or the really standard commands which I don't have really have any use.
It will probably take a lot of reverse engineering or a leaked documentation to achieve what you are trying to do.
Devices like the one you are working on usually use proprietery hardware with proprietery drivers for things like DVB, so making a third party app for a TV tuner is very hard.
First, you need to find out what kind of DVB chip / card this Android box has.
Then, you need to figure out how (on what kind of BUS) it is connected to the system.
If it is something generic, you may be able to talk to its driver, if not, you would need to write your own driver.
This is too complicated to explain in a SO post, but you could start by opening the box and looking at the components or by running commands like lsusb through ADB to try and identify the DVB component.
If the device already has a DVB app, you could try disassembling it, to find out how it works.
Good luck!

Android - 'Checking/Inspecting' Android Application Code

I've tried a number of searches but can't find anything applicable, it may be because I'm just not asking the right question! So please feel free to redirect me if this has been covered elsewhere.
I'm new to Android and to development, but have an idea to use an Application to check other simple apps on the device for potential security holes (this is to design a prototype as part of a course of study).
Before I go any further, is it feasible to use an application to check through/parse/inspect the source code of another app, searching for instances of text/commands/permissions etc (similar to a grep in Linux for example)? Any starting points would be greatly appreciated, things like inter-app communication, converting code into text, searching through that text and reporting and the like.
I think the key might be using an app to inspect a Manifest file of another for permissions settings etc. I've learnt that Dalvik compiled code has big differences to the original Android 'Java'. Is it even possible to use an app to read the Manifest file of another app?
If u use Android Studio try 'code inspect' , 'code analyze'.

How to compile AOSP with superuser

I am trying to figure out how to compile the AOSP with superuser. I was pointed to this question:
Build Android with Superuser. The instructions seem a little unclear and I also do not understand exactly what is going on. It also seems to talk about this allowing su privileges on android apps. I am not trying to get this on apps. I was trying to have root access when running some code in the main android source(specifically trying to open a socket in DisplayDevice.cpp).
I have asked a similar question here(Create a socket in android code(not in android application) getting Permission Denied). I figured that since I was put on the right track and now know that I need to compile the code as superuser, I should just ask another question.
I have added the su-binary code to my AOSP code as per instructions from the first SO question. I have also changed my init.rc, but am under the impression that I need to do something to make those changes go through as well. This is not talked about in the question. Right now when I run make su-binary I get "make: Nothing to be done for `su-binary'.". I think something was wrong here. I am using the makefile specified by m-ric. I also was not sure if I needed the Superuser.apk since I am not working with code that will be found in an Android app.
If anyone could point me in the right direction for this I would be really grateful. I am happy to provide more information if needed.
Actually, I can explain how to build Android with Superuser but I think you do not this for your task. The problem is that the process that runs the code of DisplayDevice.cpp does not belong to inet group (usually gid = 3003).
I'm not familiar with display system of Android but if you want to just experiment I would recommend you the following steps.
You need to find out the process id where your code run.
Assign to this process gid of inet group.
Right now when I run make su-binary
I get "make: Nothing to be done for `su-binary'."
An example how to change su.c can be found here: https://code.google.com/p/aosp4nexus5/wiki/AOSPforNexus5#Debugging_a_C_file
Actually only logging is added, but it is the same as changing setgid() and setuid() calls. :-)

Trying to make uni-process device ... is this possible??? :(

Hy everyone, I'm Korean and a little short on using english so please try to understand if I say things not appropriate.
So, my status is that I have odroid-s.
What I'm trying to do for like month or more is that I want to make android to HelloWorld.
What I want to say is that, on the odroid-s, bootloader part, kernel part is the same but the framework part(which will be android), I'll remove all the android part and replace it with just HelloWorld program. The purpose of this HelloWorld program is to display HelloWorld on the screen.
What I think I discovered is that, as I 'vimdiff' bootlogs between normal bootlog and the one that I removed all the system partition part (which is android system partition part) is that android kernel's init goes on and executes console(/bin/sh), netd(bin/netd), ... and it enables adb and it completes his work.
So my conclusion is, I need to use Linux kernel that is non-modified and modify it for odroid-s, and use that kernel for my HelloWorld program!
What I want to ask is.... Am I doing it right?? T_T
My goal right now is to make HelloWorld come out from this odroid-s device...
Please somebody help me. If anybody don't understand what I wrote plz tell me, I'll fix it.
Thx for reading....
The modifications to the linux kernel are likely to be irrelevant to your goals, so you might as well leave them in place for simplicity.
Your biggest challenge is going to be output - where do you want to send it? If you had one of the devices that has (or can have with the right kernel config) a debug serial port, then it would be really easy to write something triggered by the init script (or even use 'echo' in the script) which outputs your message on that port.
But chances are you want to put something on the screen. This is going to be overwhelmingly more complicated, and perhaps device dependent. The way the android runtime does this for actual apps is going to be way more involved than you probably want to get into.
A more practical approach might be to look at how the boot animation is done. For starters you could just replace it with a static image that says "hello world". Once you can do that, the next step would probably be to find some character generator code. Finally you might want to implement scrolling and other terminal-like features.
As an alternative approach, there are builds of more traditional linuxes for some android devices - debian or ubuntu for example. These may include console implementations capable of displaying on the device screen.
As another idea, if you are flexible about how much of android you would be willing to leave on the device, you could build a version of the android terminal emulator example, modified to be a home screen replacement. You might be able to remove a lot of android components (eventually including the default home screen). Or on a secured device (ie, most consumer devices that haven't been rooted) you could just do the home screen replacement while leaving the actual system unmodified. It wouldn't be secure against users wanting to run other things, but generally the user would interact only with your code.

Android screenshot - How to?

Is there any neat way of accessing screenshot of android device
programatically. I am looking for some 15-20fps.
I found one code
android\generic\frameworks\base\services\surfaceflinger\tests\screencap\scr eencap.cpp,
i built the executable and put it in /data and changed the mode 777
but when i tried to execute it using adb shell it gives the below error.
# chmod 777 test-screencap
chmod 777 test-screencap
# ./test-screencap test
./test-screencap test
screen capture failed: Function not implemented
I also know that we can access fb0 but its not a right method as suggested
by android team. Is it possible to access the screen shot at the frameworks
layer. I beleive surface flinger composes individual layers and gives it to
framebuffer.Where exactly this is done ? Can a application be able to access
such codes.
There are some java apps also which use ddms to actually capture this
framebuffer data without root access. But the fps is really poor.
I beleive there should be some or the other way of doing the above job.
Please suggest me some neat way of doing it. Suggestions are welcome.
What you are trying to do is not possible if you don't have a rooted phone, there is an app out there that does what you are trying, Screenshot ER. The latest OEM's are putting it into their /system/apps now... so you may be able to use their apps, check out this article for devices that have enabled this feature. Other than that your really stuck but there are implications with screen captures enabled as this could lead apps saving screen captures and sending that info out, enabling virus type apps...
Information for others .....Through Eclipse you can get a screen capture usig the DDMS perspective. If you take a look at the Eclipse DDMS code base its actually a stand-alone app too. You might be able to use this Java code then.
AdbHelper.getFrameBuffer(AndroidDebugBridge.getSocketAddress(), this);
Take a look at droid VNC Server
This is an open source project which you can clone the source code to your private PC. (http://github.com/oNaiPs/droid-VNC-server). I am investigating how VNC can do but It's really hard to do the same.
Read framebuffer content is an good solution also. But it just work with android <3.x only. I don't know how to fix it to work on android 4.x. If you know how (after see my suggestion) please share it here. Through my researching, I see that there are a lot of people looking for this.
Hope this helps.
nguyenminhbinh1602#gmail.com.
Android Freelancer.

Categories

Resources