Android Developers — Visual Design Screencast — Creating custom button assets - YouTube:
for creating android button
February 17, 2012
January 7, 2012
android usb reverse tethering via code
welcome again !
the problem of day is:
when i enable usb reverse tethering adb doesn't not respond anymore, via usb.
so, to have all working (reverse tethering, adb, etc) we need many operations:
1) enable reverse tethering via settings
2) change adb prop to enable tcp
3) start a dhcp request on usb0
4) disable wifi
5) other annoying stuffs?
(and reverse, of course :/)
so, it's time to find an -ultimate- solution.
1) with LLAMA (don't u know LLAMA? know it ! https://market.android.com/details?id=com.kebab.Llama ) i can start a "enable reverse tethering and so others stuff" when i plug the cable (and when certain others conditions are verified - for example: i was in wifi, so i want again connectivity).
2) with irssi connectbot (https://play.google.com/store/apps/details?id=org.woltage.irssiconnectbot) i can start some script which call dhcpd and change adb prop (just a "adb_tcp" script to enable adb over tcp, and "adb_usb" to rechange over usb)
download https://raw.github.com/k0smik0/burt/master/scripts/adb_tcp
and "netcfg usb0 dhcp" to start a dhcp request (plz attention you need ROOTED phone in order to execute this last one - in general, a rooted phone is needed for all the tricks, actually...)
3) last thing (but it's the worst problem) is to enable usb tethering, and i don't want to check via settings, so it's time to code some lines.
the idea beyond is just simple:
send a broadcast message and a receiver intercepts it and enables/disables usb tethering.
Below, the receiver:
actually, into code, the buttons send broadcast "net.iubris.burt.START" and "net.iubris.burt.STOP"
so, in terminal (irssi connectbot? another else?) the commands are just:
and obviously via adb: "adb shell am broadcast etc."
4) finally, a summa cum laude of all these pieces :
--- open irssi connectbot ---
- create a "local" connection called "start usb reverse tethering" (or as u prefer)
- edit its "post-login automation" with these lines (careful to return or use && !)
--- open Llama ---
- create new event and call "start usb reverse tethering" (or as u want)
- add condition "charging status" as "charging from usb" and other conditions u want it matches (i.e. i have "wifi network connected" = "on" so this switch from wifi to usb r.t. does its jobs because phone is really in a state which we can call "connected")
- add actions: "toggle wifi" as "wifi off" and "run app shortcut" as [irssiconnectbot action], that is the irssiconnectbot local connection u specified above, "start usb reverse tethering" (or name you used for)
5) and to restore ?
--- for irssi-connectbot, a new local connection called "stop usb reverse tethering", where "post-login automation" is:
--- and in LLama, an event for "stop usb reverse tethering" can be something like where match condition "charging status" = "using battery" and action "run app shortcut" is irssi-connectbot "stop usb reverse tethering"
finally, the "burt" receiver project on github burt and the builder apk burt.apk
credits to:
http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html
http://www.apad.tv/apadforum/showthread.php?1280-Solved-system-bin-sh-am-not-found-and-system-bin-sh-pm-not-found
the problem of day is:
when i enable usb reverse tethering adb doesn't not respond anymore, via usb.
so, to have all working (reverse tethering, adb, etc) we need many operations:
1) enable reverse tethering via settings
2) change adb prop to enable tcp
3) start a dhcp request on usb0
4) disable wifi
5) other annoying stuffs?
(and reverse, of course :/)
so, it's time to find an -ultimate- solution.
1) with LLAMA (don't u know LLAMA? know it ! https://market.android.com/details?id=com.kebab.Llama ) i can start a "enable reverse tethering and so others stuff" when i plug the cable (and when certain others conditions are verified - for example: i was in wifi, so i want again connectivity).
2) with irssi connectbot (https://play.google.com/store/apps/details?id=org.woltage.irssiconnectbot) i can start some script which call dhcpd and change adb prop (just a "adb_tcp" script to enable adb over tcp, and "adb_usb" to rechange over usb)
download https://raw.github.com/k0smik0/burt/master/scripts/adb_tcp
#!/system/bin/sh setprop service.adb.tcp.port 5555 stop adbd start adbdand download https://raw.github.com/k0smik0/burt/master/scripts/adb_usb
#!/system/bin/sh setprop service.adb.tcp.port -1 stop adbd start adbd
and "netcfg usb0 dhcp" to start a dhcp request (plz attention you need ROOTED phone in order to execute this last one - in general, a rooted phone is needed for all the tricks, actually...)
3) last thing (but it's the worst problem) is to enable usb tethering, and i don't want to check via settings, so it's time to code some lines.
the idea beyond is just simple:
send a broadcast message and a receiver intercepts it and enables/disables usb tethering.
Below, the receiver:
/** * GPL Copyleft 2012 Massimiliano Leone - maximilianus@gmail.com . */ package net.iubris.burt; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class UsbReverseTetheringIncomingReceiver extends BroadcastReceiver { protected static final String ACTION_START = "net.iubris.burt.START"; protected static final String ACTION_STOP = "net.iubris.burt.STOP"; @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); final Object obj = context.getSystemService(Context.CONNECTIVITY_SERVICE); if (action.equals(ACTION_START)) { actOnTether(obj, "tether"); } else if (action.equals(ACTION_STOP)) { actOnTether(obj, "untether"); } } private final void actOnTether(Object obj, String act) { for (Method m : obj.getClass().getDeclaredMethods()) { if (m.getName().equals(act)) { try { m.invoke(obj, "usb0"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } } }and the relative AndroidManifest.xml with receiver declaration, permissions, etc.
<manifest android:versioncode="1" android:versionname="1.0" package="net.iubris.burt" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-sdk android:minsdkversion="8"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"> <application android:debuggable="false" android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name=".UsbReverseTetheringActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"> <category android:name="android.intent.category.LAUNCHER"/> </action> </intent-filter> </activity> <receiver android:enabled="true" android:name=".UsbReverseTetheringIncomingReceiver"> <intent-filter> <action android:name="net.iubris.burt.START"/> <action android:name="net.iubris.burt.STOP"/> </intent-filter> </receiver> </application> </manifest>ok, there is also an activity, with 2 buttons start/stop.. but just for a visual sample:
actually, into code, the buttons send broadcast "net.iubris.burt.START" and "net.iubris.burt.STOP"
so, in terminal (irssi connectbot? another else?) the commands are just:
am broadcast -a "net.iubris.burt.START" # to enable am broadcast -a "net.iubris.burt.STOP" # to disable
and obviously via adb: "adb shell am broadcast etc."
4) finally, a summa cum laude of all these pieces :
--- open irssi connectbot ---
- create a "local" connection called "start usb reverse tethering" (or as u prefer)
- edit its "post-login automation" with these lines (careful to return or use && !)
am broadcast -a net.iubris.burt.START su -c "netcfg usb0 dhcp" su -c "adb_tcp"adb_tcp (from 1, above) is just a script, so u can replace last line with:
su -c "setprop service.adb.tcp.port 5555 && stop adbd && start adbd"in some terminals (due to kernel/rom version) this last ones is not needed, because adb over usb is working also with usb reverse tethering
--- open Llama ---
- create new event and call "start usb reverse tethering" (or as u want)
- add condition "charging status" as "charging from usb" and other conditions u want it matches (i.e. i have "wifi network connected" = "on" so this switch from wifi to usb r.t. does its jobs because phone is really in a state which we can call "connected")
- add actions: "toggle wifi" as "wifi off" and "run app shortcut" as [irssiconnectbot action], that is the irssiconnectbot local connection u specified above, "start usb reverse tethering" (or name you used for)
5) and to restore ?
--- for irssi-connectbot, a new local connection called "stop usb reverse tethering", where "post-login automation" is:
am broadcast -a net.iubris.burt.STOP su -c "adb_usb" as for "adb_tcp", the "adb_usb" is just these commands: su -c "setprop service.adb.tcp.port -1 && stop adbd && start adbd"
--- and in LLama, an event for "stop usb reverse tethering" can be something like where match condition "charging status" = "using battery" and action "run app shortcut" is irssi-connectbot "stop usb reverse tethering"
finally, the "burt" receiver project on github burt and the builder apk burt.apk
credits to:
http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html
http://www.apad.tv/apadforum/showthread.php?1280-Solved-system-bin-sh-am-not-found-and-system-bin-sh-pm-not-found
November 3, 2011
http://www.irasenthil.com/2011/09/how-to-inject-context-in-android-with.html?utm_medium=twitter&utm_source=twitterfeed
injecting context using roboguice
injecting context using roboguice
November 2, 2011
August 1, 2011
July 31, 2011
July 30, 2011
July 18, 2011
July 1, 2011
using google places
SOME DESCRIPTION
using google places
https://maps.googleapis.com/maps/api/place/search/json?types=food|bar|cafe|liquor_store&name=pub|bar|cafe|enoteca|wine|church&sensor=true&key=_YOUR_KEY_&radius=10&location=44.493738,11.376947
note: no quoting
using google places
https://maps.googleapis.com/maps/api/place/search/json?types=food|bar|cafe|liquor_store&name=pub|bar|cafe|enoteca|wine|church&sensor=true&key=_YOUR_KEY_&radius=10&location=44.493738,11.376947
note: no quoting
Subscribe to:
Posts
(
Atom
)