[Q] FM Radio app, Broadcom BCM4329 chipset - Galaxy Tab Q&A, Help & Troubleshooting

- UPDATE 16 February 2011 -
Attached to this post is the relevant FM source code extracted from the CyanogenMod git repository [1] and merged into the AOSP code base (note that so far I haven't used any of the "Update1" source code released by Samsung, but this would be advisable). This is not a straight copy from CM, I manually imported the FM-related code snippets (CM tweaks the audio framework further, with effects, etc.).
The good news is that this compiles fine, the bad news is that when I copy the resulting libs to the device, the Tab gets stuck at the Samsung logo.
/system/lib/libandroid_runtime.so
/system/lib/libaudioflinger.so
/system/lib/libmedia.so
/system/lib/libmedia_jni.so
At this stuck boot stage, I was able to open an ADB session, but /proc/kmsg (and other logs) were not showing any obvious problems so I couldn't diagnose the actual issue. I mounted the SD card (onto which I had a backup of the original libraries), and I restored the *.so files. The Tab immediately generated the audio welcome cue and booted to completion. So I guess that my newly-compiled libraries set was blocking the audio system, somehow.
At any rate, more work is needed to understand how to build required framework bits from AOSP so that they work on the Tab. Maybe there is more to it than just the aforementioned 4 *.so libs. For example, I'm not sure where these files take part:
media/java/android/media/AudioManager.java
media/java/android/media/AudioService.java
media/java/android/media/AudioSystem.java
media/java/android/media/MediaRecorder.java
Furthermore, I wonder how to setup the /dev/radio0 at kernel level ? It doesn't even seem to be needed at all, because the code ignores the device path altogether !! (/dev/radio0 would be a video-for-Linux v4l device, possibly required by the FM framework...although access to the Broadcom BCM4329 chipset seems to be direct in the source code) I can't see any obvious kernel diff on the CyanogenMod repository, so I'm a bit stuck to be honest ! Ultimately the v4l device should allow us to query the FM functionality directly: [v4l2-ctl -d /dev/radio0 --all -L], but it looks like CyanogenMod implements a FM hack by querying hci_w().
Talking about CM, it is clear that Techomancer's porting effort is worth mentioning, as it may be possible to enable FM support more easily there: https://github.com/techomancer / http://forum.xda-developers.com/showthread.php?t=931857
The FM app compiles fine (I just dropped the source code [2] straight into the AOSP tree). The only problem I have is JAR/APK signing, but I could use Eclipse to build the app separately from the AOSP build system. I haven't bothered, there's no point spending time on this until the FM driver/kernel stuff works.
Cheers, Daniel
[1]
https://github.com/CyanogenMod/andr...mmit/350dcf82f0c95d15ae286240d9792a6d90891f4e
[2]
https://github.com/CyanogenMod/android_packages_apps_FM
Here's a bunch of useful links:
http://www.ifixit.com/Teardown/Samsung-Galaxy-Tab-Teardown/4103/2
http://hk.samsungmobile.com/ENG/mobile-phones/samsung-galaxytab-specification
https://www.codeaurora.org/gitweb/quic/la/?p=platform/packages/apps/FM.git;a=summary
http://android.git.kernel.org/?p=pl...it;h=f427424c414886903e4ad654c143c8ce6ec10e3c
https://www.codeaurora.org/gitweb/q...o;hb=487ae541eb618b91431d0a19ae0a6eab1f6019aa
https://github.com/millenomi/nomadikradio
http://gitorious.org/0xdroid/packages_apps_fm/trees/master/src/com/quicinc/fmradio/
https://github.com/j-r0dd/android_packages_apps_FM/tree/froyo/src/com/quicinc/fmradio/
http://www.miui.com/thread-1687-1-1.html
http://android.modaco.com/content-page/318792/how-to-tune-a-fm-radio-station/page/40/#entry1422743
http://forum.cyanogenmod.com/topic/10377-qrequest-fm-radio-on-bcm4325-phones/

Note: although there is a workaround for the Droid 2, it wouldn't work with the Tab because it uses a different chipset:
http://forum.xda-developers.com/showthread.php?t=769894

Alright, the Motorola Droid 2 app runs fine in portrait mode (although bitmaps are not scaled to HDPI), but it stays on "Waiting for FM radio...". Here's the relevant logcat snippets:
Code:
ActivityIntentInfo{482a8dc0 com.motorola.fmradio.FMRadioMain}
ActivityIntentInfo{484825b0 com.sec.android.app.factorytest.FmRadioTest}
ActivityIntentInfo{48474078 com.android.settings.RadioInfo}
I/ActivityManager( 2489): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.motorola.fmradio/.FMRadioMain }
I/ActivityManager( 2489): Start proc com.motorola.fmradio for activity com.motorola.fmradio/.FMRadioMain: pid=6109 uid=10256 gids={}
I/ActivityThread( 6109): Publishing provider com.motorola.provider.fmradio: com.motorola.fmradio.FMDataProvider
I/dalvikvm( 6109): Could not find method android.util.Log.e, referenced from method com.motorola.fmradio.FMRadioMain$19.handleMessage
W/dalvikvm( 6109): VFY: unable to resolve static method 162: Landroid/util/Log;.e (Ljava/lang/String;[Ljava/lang/String;)I
D/dalvikvm( 6109): VFY: replacing opcode 0x71 at 0x0cb9
D/dalvikvm( 6109): VFY: dead code 0x0cbc-0cbc in Lcom/motorola/fmradio/FMRadioMain$19;.handleMessage (Landroid/os/Message;)V
D/FMRadioMain( 6109): **************FMRadioMain Activity onCreate() called!****************
D/FMRadioMain( 6109): **************FMRadioMain Activity onCreateInternal() called!****************
D/dalvikvm( 6109): GC_EXTERNAL_ALLOC freed 1148 objects / 76976 bytes in 36ms
I/global ( 2489): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
D/FMDataProvider( 6109): set save table: FM_Radio_saved_state
D/FMRadioMain( 6109): enter initResourceRefs()
D/FMRadioMain( 6109): Enter getDataFromDB(), will update data in list_results
D/FMDataProvider( 6109): set channel table: FM_Radio
D/FMRadioMain( 6109): Leave getDataFromDB()
D/FMRadioMain( 6109): Enter bindListViewToAdapter()
D/FMRadioMain( 6109): leave initResourceRefs()
D/FMRadioMain( 6109): Start to bind to FMRadio service
I/ActivityManager( 2489): Start proc com.motorola.fmradio:remote for service com.motorola.fmradio/.FMRadioPlayerService: pid=6116 uid=10256 gids={}
D/FMDataProvider( 6109): set channel table: FM_Radio
D/FMRadioMain( 6109): enter updateListView()
D/FMRadioMain( 6109): Enter getDataFromDB(), will update data in list_results
D/FMDataProvider( 6109): set channel table: FM_Radio
D/FMRadioMain( 6109): Leave getDataFromDB()
D/FMRadioMain( 6109): leave updateListView()
D/FMRadioMain( 6109): enter updateDisplayPanel()
D/FMRadioMain( 6109): FMRadio updateDisplay: currentFreq 87500 a1 0 a2 8 a3 7 a4 5
D/dalvikvm( 2391): GC_EXPLICIT freed 284 objects / 10768 bytes in 63ms
D/FMRadioMain( 6109): leave updateDisplayPanel()
D/FMRadioMain( 6109): enter updateListView()
D/FMRadioMain( 6109): Enter getDataFromDB(), will update data in list_results
D/FMDataProvider( 6109): set channel table: FM_Radio
D/FMRadioMain( 6109): Leave getDataFromDB()
D/FMRadioMain( 6109): leave updateListView()
D/FMRadioMain( 6109): onStart() called
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =0
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =1
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =2
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =3
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =4
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =5
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =6
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =7
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =8
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =9
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =10
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =11
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/dalvikvm( 2391): GC_EXPLICIT freed 47 objects / 2096 bytes in 66ms
E/JAVA:FMRadioPlayerService( 6116): onCreate() called
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =12
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =13
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =14
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =0
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =1
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =2
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =3
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =4
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =5
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =6
D/JAVA:FMRadioPlayerService( 6116): onBind() called
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =7
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =8
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =9
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =10
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/JAVA:FMRadioPlayerService( 6116): register airplane on/off broadcasts
D/JAVA:FMRadioPlayerService( 6116): register headset plug in/out broadcasts
D/JAVA:FMRadioPlayerService( 6116): register the audio path change message
D/JAVA:FMRadioPlayerService( 6116): register fmradio command
D/JAVA:FMRadioPlayerService( 6116): onStart() called
D/JAVA:FMRadioPlayerService( 6116): mServiceState.curServiceState() = -1
D/JAVA:FMRadioPlayerService( 6116): Before fm radio power on
D/FMDataProvider( 6109): set save table: FM_Radio_saved_state
D/JAVA:FMRadioPlayerService( 6116): FMStateUNInit:powerOn(): Power on fmradio device
W/ActivityManager( 2489): Unable to start service Intent { act=com.motorola.android.fmradio.FMRADIO_SERVICE }: not found
D/JAVA:FMRadioPlayerService( 6116): After fm radio power on
D/JAVA:FMRadioPlayerService( 6116): fm radio power on fail
D/JAVA:FMRadioPlayerService( 6116): Received intent: android.intent.action.HEADSET_PLUG
D/JAVA:FMRadioPlayerService( 6116): HEADSET is pluged in/out.
V/JAVA:FMRadioPlayerService( 6116): handleMessage headset plug begin
V/JAVA:FMRadioPlayerService( 6116): mHeadset = 1
V/JAVA:FMRadioPlayerService( 6116): mIsHeadsetPlugged = true
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =0
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =1
W/JAVA:FMRadioPlayerService( 6116): Headset is pluged in!
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/dalvikvm( 2391): GC_EXPLICIT freed 2 objects / 64 bytes in 109ms
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =2
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =3
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =4
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =5
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =6
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =7
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =8
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =9
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =10
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
W/FMRadioMain( 6109): onServiceConnected::fmradio java service started
W/JAVA:FMRadioPlayerService( 6116): IFMRadioPlayerService.Stub : isPowerOn
D/JAVA:FMRadioPlayerService( 6116): FMStateUNInit:isPowerOn(), return misPowerOn value to UI
W/FMRadioMain( 6109): servie is ready popup a wait dialog
D/FMDataProvider( 6109): set channel table: FM_Radio
D/JAVA:FMRadioPlayerService( 6116): Received intent: com.motorola.fmradio.bindservice.succeed
D/JAVA:FMRadioPlayerService( 6116): bind service succeed
W/JAVA:FMRadioPlayerService( 6116): Notice home to show update current preset name on the notice bar.
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =0
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =1
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =2
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =3
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =4
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =5
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =6
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =7
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =8
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =9
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =10
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =11
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =12
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =13
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =14
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =0
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =1
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =2
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =3
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =4
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =5
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =6
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =7
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =8
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =9
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain( 6109): FMRadio ChannelListAdapter, getView(), position =10
D/FMRadioMain( 6109): FMRadio ChannelListAdapter getview, set gone
D/FMRadioMain ChannelListView( 6109): call onDraw
D/dalvikvm( 6010): GC_FOR_MALLOC freed 44693 objects / 3062512 bytes in 134ms
D/dalvikvm( 6010): GC_FOR_MALLOC freed 41160 objects / 3021872 bytes in 59ms
D/dalvikvm( 6010): GC_FOR_MALLOC freed 40577 objects / 2773512 bytes in 42ms
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/dalvikvm( 6010): GC_FOR_MALLOC freed 33184 objects / 2369512 bytes in 242ms
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
D/FMRadioMain ChannelListView( 6109): call onDraw
V/WindowManager( 2489): Dsptch to Window{48632258 com.motorola.fmradio/com.motorola.fmradio.FMRadioMain paused=false}
W/KeyCharacterMap( 6109): No keyboard for id 0
W/KeyCharacterMap( 6109): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
E/ShutdownThread( 2489): IsShutDownStarted()
I/KeyInputQueue( 2489): Input event
D/KeyInputQueue( 2489): screenCaptureKeyFlag setting 0
V/WindowManager( 2489): Dsptch to Window{48632258 com.motorola.fmradio/com.motorola.fmradio.FMRadioMain paused=false}
W/InputManagerService( 2489): Window already focused, ignoring focus gain of: [email protected]
D/dalvikvm( 5937): GC_EXPLICIT freed 2208 objects / 146560 bytes in 60ms
E/ShutdownThread( 2489): IsShutDownStarted()
I/KeyInputQueue( 2489): Input event
D/KeyInputQueue( 2489): screenCaptureKeyFlag setting 1
V/WindowManager( 2489): Dsptch to Window{48629c78 com.motorola.fmradio/com.motorola.fmradio.FMRadioMain paused=false}
E/ShutdownThread( 2489): IsShutDownStarted()
I/KeyInputQueue( 2489): Input event
D/KeyInputQueue( 2489): screenCaptureKeyFlag setting 0
V/WindowManager( 2489): Dsptch to Window{48629c78 com.motorola.fmradio/com.motorola.fmradio.FMRadioMain paused=false}
D/FMRadioMain( 6109): onPause() called
E/WindowManager( 2489): Overwriting rotation value from 0
W/InputManagerService( 2489): Starting input on non-focused client [email protected] (uid=10256 pid=6109)
I/ActivityManager( 2489): No longer want com.appspot.swisscodemonkeys.apps (pid 6020): hidden #16
D/FMRadioMain( 6109): onStop() called
D/FMRadioMain( 6109): onDestroy() called
D/JAVA:FMRadioPlayerService( 6116): onUnbind() called
D/JAVA:FMRadioPlayerService( 6116): unregister Receiver.

I also tried a different FMRadio.apk (just that, no other lib/bin files), but the app com.huawei.android.FMRadio crashes with a Force Close. This is the one with a grey/silver radio icon (big black speaker on the right hand side).
The HtcFMRadio.apk (com.htc.fm) also FC, the icon for this one is a black radio with white knobs at the bottom, and a red needle on white background at the top.
The Droid 2 icon is a big square dial with a red needle.
EDIT: the deodexed FMRadio app from the Samsung Galaxy S (com.sec.android.app.fm) also crashes with Force Close. The icon is a big orange square with a single mini round dial in the bottom middle.

FM Radio reception, AND transmission
https://github.com/CyanogenMod/android_frameworks_base/blob/froyo/core/jni/android_hardware_fm.cpp
http://gitorious.org/0xdroid/packages_apps_fm/trees/master/src/com/quicinc/fmradio/
https://github.com/j-r0dd/android_packages_apps_FM/tree/froyo/src/com/quicinc/fmradio/
http://www.miui.com/thread-1687-1-1.html

daniel.weck said:
FM Radio reception, AND transmission
https://github.com/CyanogenMod/android_frameworks_base/blob/froyo/core/jni/android_hardware_fm.cpp
http://gitorious.org/0xdroid/packages_apps_fm/trees/master/src/com/quicinc/fmradio/
https://github.com/j-r0dd/android_packages_apps_FM/tree/froyo/src/com/quicinc/fmradio/
http://www.miui.com/thread-1687-1-1.html
Click to expand...
Click to collapse
is any of this apps working with G-tab radio...it would fine is its work

Update: still looking for a driver, /dev/radio device, kernel module, and app combination that would work on the Tab... (I finished building a full ROM from Google's open-source code, next step is to test Samsung's custom code, then to try FM Radio code from other well-known ROMs)

https://github.com/CyanogenMod/andr...mmit/350dcf82f0c95d15ae286240d9792a6d90891f4e
https://github.com/CyanogenMod/android_packages_apps_FM
https://github.com/CyanogenMod/android_frameworks_base/blob/froyo/core/jni/android_hardware_fm.cpp

Is there any progress already?
I'd really love to use FM transmitting as my car does have an aux-in. They want to charge me additional 450 bucks for the stupid cable...

how is this going?
Hi, Thanks for doing all this testing, It looks like just a few people of us that are still interested in the good ol' FM. ahhhhh, please let us know when u have the apk

I'm interested too! Keep us posted!

I had already asked about fm radio in another topic, to be sure that Brazil has a rom software because the version of Brazil have tv and radio.

Body said:
I had already asked about fm radio in another topic, to be sure that Brazil has a rom software because the version of Brazil have tv and radio.
Click to expand...
Click to collapse
CAn u send links to where to buy tabs in Brazil? I so want one with at least one of the two, PLUS all the cool things that already has.

Bump.. some progress on that? I've replaced my car stereo unit with a galaxy tab, and it kinda sucks not to have the FM radio. I've been trying the module from galaxyS but didn't worked. I've read that brazilian versions of gTab has a DVB-T hardware component MORE than ours, let's hope that the fm radio receving capabilities are not in that chip we don't have.

ruspa said:
Bump.. some progress on that? I've replaced my car stereo unit with a galaxy tab, and it kinda sucks not to have the FM radio. I've been trying the module from galaxyS but didn't worked. I've read that brazilian versions of gTab has a DVB-T hardware component MORE than ours, let's hope that the fm radio receving capabilities are not in that chip we don't have.
Click to expand...
Click to collapse
Not to go off topic, but do you have any pictures of it installed in your car?

There is an app that works really well called TuneIn Radio. It will get you all of your local stations or any other stations you want. Pretty much the same as having the FM radio except you need cell signal for data.

kholdstare said:
There is an app that works really well called TuneIn Radio. It will get you all of your local stations or any other stations you want. Pretty much the same as having the FM radio except you need cell signal for data.
Click to expand...
Click to collapse
theres also radio time that gets stations from all over the world, but having fm transmitting abilities would be freeking awesome, id definitely replace my headunit with the tab then

JaysFreaky said:
Not to go off topic, but do you have any pictures of it installed in your car?
Click to expand...
Click to collapse
Sure I do! And took a little video as well... Galaxy Tab in AlfaRomeo Mito
As you see.. a radio app would be just great! Not that I like to spend my time in car listening to commercial ads all the time.. but it is helpful.

Should I get started porting the MIUI FM app in preparation for a working tuning framework?

knightnz said:
Should I get started porting the MIUI FM app in preparation for a working tuning framework?
Click to expand...
Click to collapse
If you can, yes please do so, like someone said: the hardware is there, just like it has been on the iPhones but why they wouldn't want you to listen to free music, iTunes would die. And I guess Samsung doesn't want you to either because they got the app store and media sale fevers.

Related

light and repeat registry changes

If you know what you are doing for registry changes
max time for light even if set to no limit is appox 40 mins
HKCU
control panel
notifications
reminders
avail opt 13
duration 0x0 (0)
options 1073741853
new text message
avail opt 16 [15 if you do not want fixed repeat]
duration 0x0 (0)
options 1073741855
missed call
avail opt 15
duration 0x0 (0)
options 15

[MODS PLEASE DELETE] Notifications disappear

Mods - you can delete this thread as it turns out it is NOT a general issue, but a ROM issue. Thanks!
For some reason, my notifications have started silencing. Ringtones still work - but SMS, Email, etc don't. This effect seems to go away after reboot.
I am a pretty experienced Android user, and have checked volume and sound to make sure they are set right - which they are.
Using Cyanogen 5.0.4.1, but have not had this problem before so I'm thinking it is an app issue.
I don't want to start uninstalling apps willy-nilly...anyone else having this issue?
This is my logcat when a message is received:
Code:
W/Service ( 236): setForeground: ignoring old API call on com.wsandroid.Core.BaseService
W/Service ( 236): setForeground: ignoring old API call on com.wsandroid.Core.BaseService
V/Telephony( 292): getOrCreateThreadId uri: content://mms-sms/threadID?recipient=%2B19793184040
V/Telephony( 292): getOrCreateThreadId cursor cnt: 1
I/power ( 92): *** set_screen_state 0
D/Sensors ( 92): using /dev/input/event6 (name=compass)
D/Sensors ( 92): using /dev/input/event3 (name=proximity)
D/Sensors ( 92): using /dev/input/event0 (name=lightsensor-level)
D/lights ( 92): 0 255 255
D/SurfaceFlinger( 92): About to give-up screen, flinger = 0x14c150
D/AK8973 ( 80): Compass CLOSE
Are you using a dock? If so it's happening to me too. If I reboot and don't use the dock it stops. There was some talk about it in the CM thread as a known issue.
uberingram said:
Are you using a dock? If so it's happening to me too. If I reboot and don't use the dock it stops. There was some talk about it in the CM thread as a known issue.
Click to expand...
Click to collapse
Indeed! Thanks for the pointer.
Mods - you can delete this thread as it turns out it is NOT a general issue, but a ROM issue. Thanks!

[Q] Disable reboot on holding down power button

In some of my jeans the N7000 just baraly fits, my big problem here is when Im sitting on a low chair (school) the powerbutton sometimes gets pressed for 10 seconds, which will cause a reboot. This happens a lot to me.
I have searched for a while now but I can not find a solution for my problem
Anyone?
After about 30 reboots it's time for another kick
nicksel said:
After about 30 reboots it's time for another kick
Click to expand...
Click to collapse
Have you tried any cases or bumpers that may prevent the button from being pushed in? It may help somewhat. I'm pretty sure the reboot on long press is a hardware function, not a software one. I don't think it can easily be removed.
rnewton01 said:
Have you tried any cases or bumpers that may prevent the button from being pushed in? It may help somewhat. I'm pretty sure the reboot on long press is a hardware function, not a software one. I don't think it can easily be removed.
Click to expand...
Click to collapse
I prefer not to have a case around my N7000, it makes it much fatter.
Bumpers should do the trick, do you have any ideas?
Ofcourse a software solution would be so much better...
Anyone? I don't want to sell the thing but this almost leaves me no choice..
You're my only hope
rnewton01 said:
I don't think it can easily be removed.
Click to expand...
Click to collapse
OP, I'd say it's more likely than not this is correct.
Some some quick digging with the power button and holding causes this:
Code:
E/GlassLockScreenFMRadioWidget( 2768): onReceive() : intent action=android.intent.action.SCREEN_OFF
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 957.120000000
V/AlarmManager( 2768): sending alarm Alarm{40a60850 type 2 com.google.android.apps.maps}
V/AlarmManager( 2768): pending wakeup alarm com.google.android.apps.maps
V/AlarmManager( 2768): Adding alarm Alarm{40b06df0 type 2 com.google.android.location} at 7
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 121.111000000
V/AlarmManager( 2768): Adding alarm Alarm{40aff898 type 2 com.google.android.apps.maps} at 0
W/WifiStateTracker( 2768): ------ msg.what =8
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 176.111000000
V/AlarmManager( 2768): Adding alarm Alarm{40a0d170 type 2 com.google.android.apps.maps} at 0
I/wpa_supplicant( 2901): SCAN_RESULTS : [3]
D/dalvikvm( 3718): GC_CONCURRENT freed 473K, 46% free 3686K/6791K, external 0K/0K, paused 2ms+1ms
before adb is killed. Seems like the phone is power cycling it, nothing here indicates really a clean shutdown of applications (I would even speculate a garbage collection directly before a reboot is potentially nothing but a waste of time, so the phone doesn't even know it's about to be kicked into a power cycle until it is)
jayshah said:
OP, I'd say it's more likely than not this is correct.
Some some quick digging with the power button and holding causes this:
Code:
E/GlassLockScreenFMRadioWidget( 2768): onReceive() : intent action=android.intent.action.SCREEN_OFF
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 957.120000000
V/AlarmManager( 2768): sending alarm Alarm{40a60850 type 2 com.google.android.apps.maps}
V/AlarmManager( 2768): pending wakeup alarm com.google.android.apps.maps
V/AlarmManager( 2768): Adding alarm Alarm{40b06df0 type 2 com.google.android.location} at 7
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 121.111000000
V/AlarmManager( 2768): Adding alarm Alarm{40aff898 type 2 com.google.android.apps.maps} at 0
W/WifiStateTracker( 2768): ------ msg.what =8
E/AlarmManagerService( 2768): android_server_AlarmManagerService_set to type=2, 176.111000000
V/AlarmManager( 2768): Adding alarm Alarm{40a0d170 type 2 com.google.android.apps.maps} at 0
I/wpa_supplicant( 2901): SCAN_RESULTS : [3]
D/dalvikvm( 3718): GC_CONCURRENT freed 473K, 46% free 3686K/6791K, external 0K/0K, paused 2ms+1ms
before adb is killed. Seems like the phone is power cycling it, nothing here indicates really a clean shutdown of applications (I would even speculate a garbage collection directly before a reboot is potentially nothing but a waste of time, so the phone doesn't even know it's about to be kicked into a power cycle until it is)
Click to expand...
Click to collapse
Too bad Guess i'll have it restarting every now and then xD

[MOD] Getting tablet UI on CM9

Since I saw some people wants tablet UI on mirroring or lapdock,
I made a file for Atrix's CM9 based on this thread.
http://forum.xda-developers.com/showthread.php?t=1467051
I didn't post a screenshot cause you can see it at link.
Every UI will change to that of tablet, and every app will act as tablet.
So here's the steps you have to do.
http://api2.ge.tt/0/81rFJED/0/blob/download
1. Download services.jar and overwrite it to /system/framework.
(Of course, need 644 permission.
If you are not sure, see other file's permission in folder.)
(This file is based on alpha 7)
2. Open /system/build.prop
3. Find the line 'ro.build.characteristics=default'
and change the 'default' to 'tablet'
4. Set the screen density to 120 by changing
'ro.sf.lcd_density=240' to 'ro.sf.lcd_density=120'
5. Save and reboot.
6. You will get tablet UI
So, If you want to get back,
just change your density to 240 and it will revert to phone UI.
We need reboot between UI change now,
but maybe devs can do some mod after CM9 have all feature
Awesome but, it doesn't look very good on the lap dock - there is something wrong with the resolution. Im sure it will be fixed.
Additionally if the phone could switch the UI from Phone to Tablet when HDMI is connected it would be an awesome way to ditch the awful Webtop.
+1 Thanks to you man!!
was trying to do this by editing the services.jar, this is WONDERFUL.
if possible can you tell me how to do a PM? (where changing the file classes), baksmali, simali need not only change which line ...
soluttion calls
folks, you should now be aware that the "app called" force close, I've tried the app (phone) several roms without success .. == force close when calling ==
ps: but the calls continue in the background!
some options:
1 - ShakeCall (has other apps)
2 - accessibility options = end call button poweer
This is cool!
I tried it, its like having a small tablet....
Just a pitty about the phone UI, its not actually usuable like that!
Whatching for development
I see great potential in this.
If we could autoscript something, where if the phone recognises that it's been connected via HDMI (for mirroring), then it automatically changes into tablet UI. That'll be so freakin awesome! And it'll be a good webtop replacement for CM9!
Notorious544d said:
I see great potential in this.
If we could autoscript something, where if the phone recognises that it's been connected via HDMI (for mirroring), then it automatically changes into tablet UI. That'll be so freakin awesome! And it'll be a good webtop replacement for CM9!
Click to expand...
Click to collapse
Thats what I've been saying...
Notorious544d said:
I see great potential in this.
If we could autoscript something, where if the phone recognises that it's been connected via HDMI (for mirroring), then it automatically changes into tablet UI. That'll be so freakin awesome! And it'll be a good webtop replacement for CM9!
Click to expand...
Click to collapse
+1
I thought somebody was already working on this.
Sent from my MB860 using xda premium
try
is usable but ...
set large fonts ...
do not set the lcd_density so small, it can be adjusted, try 140 .... (I think)
I find it very usable ... hopefully someone with enough knowledge to resolve calls ...
D/AudioMgrRIL( 1321): setting volume, volume = 6
I/AudioService( 1469): AudioFocus requestAudioFocus() from AudioFocus_For_Phone_Ring_And_Calls
D/lights ( 1469): RGB: "attention", color=0x00000000, flash=2, onMs/offMs=0/0 => blink=0, RGB=0 0 0
D/CallNotifier( 2693): showIncomingCall()... phone state = OFFHOOK
D/dalvikvm( 2693): GC_CONCURRENT freed 358K, 27% free 6530K/8839K, paused 2ms+2ms
D/lights ( 1469): LCD: SENSOR, 88 * 1.00 => 88
D/lights ( 1469): LCD: SENSOR, 82 * 1.00 => 82
D/lights ( 1469): LCD: SENSOR, 75 * 1.00 => 75
D/lights ( 1469): LCD: SENSOR, 69 * 1.00 => 69
D/dalvikvm( 2693): GC_CONCURRENT freed 422K, 27% free 6653K/9031K, paused 1ms+2ms
D/lights ( 1469): LCD: SENSOR, 63 * 1.00 => 63
D/lights ( 1469): LCD: SENSOR, 56 * 1.00 => 56
I/ ( 1400): odm_disp_esd_thread is running(200) state=1
D/lights ( 1469): RGB: "attention", color=0x00ffffff, flash=2, onMs/offMs=7/1000 => blink=1, RGB=255 255
255
D/lights ( 1469): LCD: SENSOR, 50 * 1.00 => 50
D/lights ( 1469): RGB: "attention", color=0x00000000, flash=2, onMs/offMs=0/0 => blink=0, RGB=0 0 0
D/lights ( 1469): LCD: SENSOR, 44 * 1.00 => 44
D/lights ( 1469): LCD: SENSOR, 37 * 1.00 => 37
D/lights ( 1469): RGB: "attention", color=0x00000000, flash=0, onMs/offMs=0/0 => blink=0, RGB=0 0 0
I/CustomSpnReader( 2693): operatorNumberic = 72402
I/CustomSpnReader( 2693): oriSpnName = TIM
I/CustomSpnReader( 2693): Current language is : pt
E/CustomSpnReader( 2693): Config File Path : /system/etc/spn-conf.xml
D/lights ( 1469): LCD: SENSOR, 31 * 1.00 => 31
D/lights ( 1469): LCD: SENSOR, 25 * 1.00 => 25
I/CustomSpnReader( 2693): expression : /spnOverrides/spnOverride[@numeric='72402']
W/ActivityThread( 2693): ClassLoader.getResources: The class loader returned by Thread.getContextClassLoa
der() may fail for processes that host multiple applications. You should explicitly specify a context cla
ss loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
D/lights ( 1469): LCD: SENSOR, 18 * 1.00 => 18
E/CustomSpnReader( 2693): Not Found : 72402 in spn-conf.xml
D/lights ( 1469): LCD: SENSOR, 12 * 1.00 => 12
D/ComprehensiveCountryDetector( 1469): onServiceStateChanged
D/lights ( 1469): LCD: SENSOR, 6 * 1.00 => 6
D/lights ( 1469): LCD: SENSOR, 0 * 1.00 => 0
I/power ( 1469): *** set_screen_state 0
D/lights ( 1469): buttons: USER, 0
D/SurfaceFlinger( 1318): About to give-up screen, flinger = 0xf918
D/ ( 1400): NVRM_DAEMON(1137): pm_notifier_thread: calling power_displays(false)
I/ ( 1400): DispMgr recv'd NvDispMgrDisplayAttr_Suspend
I/ ( 1400): called NvDispMgrAttrSetTranslate() from attr_common err=0
I/ ( 1400): DispMgr recv'd NvDispMgrDisplayAttr_Suspend
I/ ( 1400): called NvDispMgrAttrSetTranslate() from attr_common err=0
D/ ( 1400): NvDdkDispBacklightTimeout() thread running
I/ ( 1400): enter motDsiSetMode
I/ ( 1400): exit motDsiSetMode
I/ ( 1400):
I/ ( 1400): enter motDsiSetPowerLevel
I/ ( 1400): enter motDsiSuspend
I/nvrm_daemon( 1394): NVRM_DAEMON(1137): pm_notifier_thread: calling power_displays(false)
E/AudioHardwareMot( 1321): Error:Unsupported key = tty_mode=tty_off
D/dalvikvm( 2693): GC_CONCURRENT freed 425K, 27% free 6718K/9095K, paused 3ms+2ms
I/ ( 1400): exit motDsiSuspend
I/ ( 1400):
I/ ( 1400): exit motDsiSetPowerLevel
I/ ( 1400):
D/ ( 1400): NVRM_DAEMON(1140): pm_notifier_thread: returned from power_displays(false)
I/nvrm_daemon( 1394): NVRM_DAEMON(1140): pm_notifier_thread: returned from power_displays(false)
E/AudioHardwareMot( 1321): Error:Unsupported key = screen_state=off
E/DefaultVoicemailNotifier( 2419): No voicemails to notify about: clear the notification.
D/AccelerometerListener( 2693): orientation: horizontal
D/MccTable( 2693): updateMccMncConfiguration: mcc=724, mnc=2
D/MccTable( 2693): locale set to null_br
D/MccTable( 2693): WIFI_COUNTRY_CODE set to br
I/WifiService( 1469): WifiService trying to set country code to br with persist set to true
D/dalvikvm( 1469): GC_EXPLICIT freed 558K, 31% free 9601K/13767K, paused 4ms+5ms
D/dalvikvm( 2693): GC_CONCURRENT freed 421K, 26% free 6839K/9223K, paused 2ms+3ms
D/Tethering( 1469): MasterInitialState.processMessage what=3
D/PicasaSyncManager( 2253): active network: null
D/PicasaSyncManager( 2253): background data: true
I/MediaUploader( 2232): No need to wake up
Click to expand...
Click to collapse
seems an error of speakers, and also a file in system/etc/spn-conf.xml
WOW
I would love to have this ability. I am not a huge fan of the webtop as is, and if there was a method to use this UI through the HDMI connection (especially through a lapdock) I could see some cool things happening.
Only thing that stopped me from using this is that I can't use the phone
Sent from my MB860 using XDA App
The phone capability would be awesome to have, and I wouldn't doubt that the extremely talented DEV people could find a way to make that work, but no phone isn't a deal breaker for me.
I tried to get awareness of this in the CM9 thread of jokersax, but there is more important talk going on over there at the moment. Hopefully someone will pick up this project further, and make it available to those who want it (and hopefully add in the missing functionalities).
The UI experience I think would clean up the overall install of things on the phone, get rid of the webtop and/or separate OS installation, and provide one OS that will be used for both the phone and a docking experience.
We'll see though .
I can start working on this, this weekend, I've been busy working on a small version of vector Linux that runs through vnc on the lap dock.
Sent from my MB860 using XDA App
Use buildroot or OpenEmbedded to keep it light as possible, plus you can optimize the compiler flags for tegra
Sent from my MB860 using XDA App
OK, hadn't thought of build root, the only thing I'm having a little trouble is getting it to mount the 32 gb SD card, even after partitioning it for vector. Sometimes it'll mount. Some times mope
Sent from my MB860 using XDA App
Mount loop img, I preffer it over reformating the SD card
Also check out Linux for Tegra from nVidia
Sent from my MB860 using XDA App
Will do, thanks
Sent from my MB860 using XDA App
I don't sure if it's possible, but can we run vnc server on android and connect from Chroot/vnc environment. Sort of vnc in vnc. If it's possible we can use it instead aiw application.
Sent from my MB860 using XDA App
I can try that when I get home, but I don't think it'll work.
Sent from my MB860 using XDA App
Heck Yeah
I started up the talk again! haha
Thanks guys for talking/looking into getting this to work. Hopefully bumping this post will get people to check into this more, and be guinea pigs for the testing.
Unfortunately, my schedule and how I use my phone doesn't allow me the time to easily help out with testing things, and I apologize about that ahead of time.
Keep up the good work, and please keep us informed!
Also, I'm not sure if the thread creator would get upset with you working on his stuff (and publishing it for testing, or whatever) without proper consent. Just wanted to throw that out there, just in case. I don't want to see the progress on things to be thwarted due to something as trivial as getting a "verbal" OK to work on making something better.
Thanks for the time all!

[APP][NST/G] Quick Tiles

*6-17-23 Updated to 2.2*
--removed dependency on ScreenShotEasy
--added small binary file to convert frame buffer contents to png image
If you are updating, you must uninstall the previous version and read below as the app function has changed starting with 2.0.
The Quick Tiles app is an implementation for the NST/G of a now ubiquitous feature of modern Android systems. In this version for the NST/G, the user may select and arrange up to eight "tiles" which are shortcuts to features such as WiFi, screen orientation, NoRefresh, FastMode, and others. You may also edit the selection and arrangement of the tiles via the panel itself (the "pencil"--see screenshot below). I've tried to keep the selection of options focused on the typical areas of display and connectivity, although I have included some mode functions as well, such as display refresh modes and USB host. I welcome suggestions for additional options, but would discourage trying to make a "launcher" application out of what should be shortcuts to basic functions.
General Requirements
1. Root. A number of tiles require root to access shell commands or something else generally off limits to typical user access. Root permission is required only once, however, since it's all one app. The quickest way to get this over with is a long-press on the WiFi tile. This tries to access the WiFi Settings section of the Settings app and so needs root access. Once you've approved that, anything else will be OK.
2. This is a Tasker-generated app. If you already have one of my other Tasker-generated apps, you don't need the two Google maps library files included in the zip and can delete them. If you do need them, copy the two files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Without these files resident, the app will not install.
3. Copy the binary file "fb2png" to /data/local, permissions rwx rx rx
4. Copy the folder "QTiles" (and its contents) from the zip to the root of your SD card.
5. Because it is used (by Tasker) as a plugin, RotationLocker is a dependency of the app. It must be installed whether you use that feature or not.
6. Copy the QuickTiles apk file to your SD card and install via a file manager or install via ADB.
Setup
This app includes all the functionality of many other small apps I have put together. As such, it needs many of the configuration measures and/or plugins for those apps (but not the actual apps themselves such as USB Audio, Screenshot, ES Remote Manager, RN Menu, WiFi Menu, etc.--any of these other apps may be uninstalled if you are using Quick Tiles). As supplied, the app is configured to show only the WiFi tile (option wifi1). This configuration information is stored in the file QTiles/qtiles.txt:
Code:
wifi1,blank,blank,blank
You can edit this file on the NST/G with a text editor or on your PC.
New in version 2.x
To enable Quick Tiles, tap on the icon after installation. You will eventually see a message that the app is enabled. This means there is now a transparent overlay which covers the status bar from the right edge of the "menu" button to approximately the clock. The stock "hot spot" for the WiFi/Glowlight dialog extends fully over the clock. I stopped my overlay before the clock to allow access to bookmarking in the stock reader. So if you've gotten used to tapping in the upper right corner for WiFi/Glowlight, you'll need to relearn the motion. What you gain (besides Quick Tiles) is the possibility of assigning some other function to "clock" using NTMM, although it won't work in the Reader. Meanwhile, Quick Tiles will work in the Reader as well as everywhere else, whether the status bar is visible or not. Also, enabling Quick Tiles means that if you reboot, the transparent overly will reappear (shortly) without any additional action on your part (i.e., you never need to tap on the app icon again). To open the panel, just tap on the status bar between the "menu" button and the clock. You can close the panel manually by swiping upward (a little clumsy) or tapping on the small arrow at bottom center.
There are potential hazards associated with blocking areas of the screen, even apparently "blank" areas of the status bar. During testing I found at least one app that used the "hot spot" area when in full-screen mode: QuickPic. Editing and other tools appear in that area and are blocked by the transparent overlay of QuickTiles. My solution was to add an "escape" of sorts. If you long-press on the "hot spot" you will shortly see a toast stating that the app is disabled for 1 minute. This allows access to potentially blocked spots some apps may use.
----------------------------------------------------------------------------------------------------------------------------
When the Quick Tiles panel is open, a long-press on the pencil icon in the lower right will attempt to open the configuration file for editing. If you choose whatever text editor you have as the default for a .txt file, the next time you access this function the file will open immediately (ES Note Editor, a part of ES File Explorer, is a great simple text editor). Changes in the configuration are immediate, i.e., the next time you open the panel, you will see the new arrangement. YOU MUST SELECT A MULTIPLE OF FOUR TILES, INCLUDING BLANKS (i.e., either 4 or 8 tiles).
All the tile options are listed below, along with links for configuration information and download links for apps used as plugins. These are also the names to be used in the configuration qtile.txt file as well as the names of icon files in Qtiles/icons (if you hate my icons, you may design your own, as long as you adhere to the same size of transparent png). By their nature, some tiles require the panel to close before execution. Actions which display alerts or dialogs are examples. Others (such as WiFi) can operate either with auto-close of the panel or without. It's your choice. I find myself often wanting something else after starting WiFi, so I have that tile set for manual close. Where this is an option there are two identical icons such as wifi1 and wifi2. The option with the "1" will auto-close the panel in every case. If you choose the option with the "2", you can close the panel yourself with an upward swipe or the little arrow.
Note: where an app is required, you only need to install it if you are going to use that function. This does not include RotationLocker which is a dependency.
blank
Place-holder. It should be used to make a full count of four (one row) or eight (two rows), if you are using fewer than a full row. It could also be used for spacing.
clearscreen
Uses the Nook Clear Screen app as a plugin (download).
fastmode1/2
Toggle shortcut to FastMode2 (the original FastMode has a different package name and will not work). It behaves exactly the same way as tapping on the regular FastMode icon. You must have FastMode2.apk installed (download) as well as a kernel that supports this display mode.
ftp
Shortcut to the Remote Manager function of ES File Explorer. WiFi must be on for this to work. Termination of the Remote Manager is handled through the notification window. You must have some version of ES File Explorer installed (download).
glowlight
Duplicates the behavior of QuickNav button #5 (default) for the NSTG, calling up the GlowLight control panel.
glowtoggle
Toggles the light off/on with a tap. A long-press calls up the GlowLight control panel.
Note: this option assumes you have not reassigned a long-press of the "n" button to anything but the Glowlight. Otherwise, a tap on the icon will call up whatever alternative you have selected.
input
Calls up the Android 2.1 keyboard selector. Keyboard apps should be placed in /system/app and permissions set to rw-r-r.
norefresh1/2
Toggle shortcut to NoRefresh (the package names for the two versions of the app are apparently the same so whichever you have should work). It behaves exactly the same way as tapping on the regular NoRefresh icon. Generally you don't need this, but those of us who use NoRefresh know that it sometimes just drops out! You must have either of the two NoRefresh apps installed (download) as well as a kernel that supports this display mode. Note: this assumes you have all the automatic/gesture options disabled. The contrast adjustment is OK, but the rest causes all kinds of trouble.
reboot
Calls up a dialog similar to the stock shut down dialog. If reboot is confirmed, executes a complete reboot from the "Read Forever" screen.
rotation
Toggle (default portrait) that uses the Rotation Locker app to change the screen orientation. Landscape mode is locked in by using a notification/background service. It is best not to exit landscape via the notification since that will probably confuse the toggle variable. Return to portrait should be done via the Quick Tile. Requires RotationLocker app (download).
screenshot
Uses /data/local/fb2png to take a screenshot and then displays a brief, smaller version of the screenshot as well as a notification. Images are saved to /sdcard/Pictures/Screenshots. Create folders if they don't exist already.
usbaudio
Toggle which starts/stops USB audio service and prompts for the appropriate connections before displaying on-sceen media volume controls. Requires a kernel supporting USB host, additional patches for audio, as well as phone.apk in system/app for media volume control.
usbhost
Toggle which starts/stops USB host service and prompts for the appropriate connections. Requires a kernel supporting USB host.
wifi1/2
Toggle which bypasses the B&N WiFi Quick Settings dialog. If WiFi is off, it turns it on. If it's on, it turns it off. A long-press on this tile turns on the WiFi radio and opens the WiFi Settings menu for occasions when you need to select and log on to an unfamiliar network.
Note that something like wifi1/2 in the list above actually represents two different options, wifi1 and wifi2
Heads up, the RotationLocker link on this is dead, 403 forbidden
alexhorner said:
Heads up, the RotationLocker link on this is dead, 403 forbidden
Click to expand...
Click to collapse
Try again. I just downloaded from the link.
nmyshkin said:
Try again. I just downloaded from the link.
Click to expand...
Click to collapse
No luck here. It downloads an apk file which contains the contents of the 404 page.
Tried in another browser logged out, logged in, etc
alexhorner said:
No luck here. It downloads an apk file which contains the contents of the 404 page.
Tried in another browser logged out, logged in, etc
Click to expand...
Click to collapse
Ah. I didn't look at the file. Try this https://forum.xda-developers.com/attachments/rotationlocker_mod-apk.5088219/
nmyshkin said:
Ah. I didn't look at the file. Try this https://forum.xda-developers.com/attachments/rotationlocker_mod-apk.5088219/
Click to expand...
Click to collapse
That one worked, thanks!
Got QuickTiles installed now. Very happy with it, makes some functions much easier to handle.
Is it possible to move the files from the SD to the system? I don't keep an SD card with my nook right now as I am constantly rewriting it for testing.
alexhorner said:
That one worked, thanks!
Got QuickTiles installed now. Very happy with it, makes some functions much easier to handle.
Is it possible to move the files from the SD to the system? I don't keep an SD card with my nook right now as I am constantly rewriting it for testing.
Click to expand...
Click to collapse
Mmm....it's probably possible. Fortunately I still have all the bits on my KitKat device (Tasker AppFactory will not run on Eclair, not even version 1) from just updating the app. As it happens this is something I'm looking into for my weather widget which I've been doing some update work on when not putting out fires in the Forest of Arden (BTW, the other UK "helpee" managed nicely on a second try with your directions, so thanks from both of us). I believe moving its folder to /media will resolve an issue present since version 1, but I've gotten bogged down in other issues and haven't tried it yet. I'm also working on a mod of Mantano Reader, so the little grey cells get a bit jumbled at times.
Let me see if I can quickly change all the references from "sdcard" to "media" and recompile. It may take a day and I probably won't test it. I'll leave that to you. Meanwhile, you clearly need a couple of sdcards.
nmyshkin said:
Mmm....it's probably possible. Fortunately I still have all the bits on my KitKat device (Tasker AppFactory will not run on Eclair, not even version 1) from just updating the app. As it happens this is something I'm looking into for my weather widget which I've been doing some update work on when not putting out fires in the Forest of Arden (BTW, the other UK "helpee" managed nicely on a second try with your directions, so thanks from both of us). I believe moving its folder to /media will resolve an issue present since version 1, but I've gotten bogged down in other issues and haven't tried it yet. I'm also working on a mod of Mantano Reader, so the little grey cells get a bit jumbled at times.
Let me see if I can quickly change all the references from "sdcard" to "media" and recompile. It may take a day and I probably won't test it. I'll leave that to you. Meanwhile, you clearly need a couple of sdcards.
Click to expand...
Click to collapse
Managed to find another SD card but I would still like it to run without certainly. No rush on it!
alexhorner said:
Managed to find another SD card but I would still like it to run without certainly. No rush on it!
Click to expand...
Click to collapse
Give the attached apk a try. Best to uninstall the old one first, move the Qtiles folder and contents to /media and then install the new app. Tap on the icon and see what happens. As I said, I did not test this, but I think I caught all the directory changes. Unless there is an access issue, it should function.
nmyshkin said:
Give the attached apk a try. Best to uninstall the old one first, move the Qtiles folder and contents to /media and then install the new app. Tap on the icon and see what happens. As I said, I did not test this, but I think I caught all the directory changes. Unless there is an access issue, it should function.
Click to expand...
Click to collapse
No luck after a few attempts inclusing a reboot I'm afraid. Attached is the logcat which complains of some failed link creations:
Spoiler: QuickTiles 2.0 Internal Logcat
I/PowerManagerService( 1053): setPowerState: mPowerState=0x3 newState=0x3 noChangeLights=false reason=1
I/PowerManagerService( 1053): setPowerState: mPowerState=0x3 newState=0x3 noChangeLights=false reason=1
I/PowerManagerService( 1053): setPowerState: mPowerState=0x3 newState=0x3 noChangeLights=false reason=1
I/PowerManagerService( 1053): setPowerState: mPowerState=0x3 newState=0x3 noChangeLights=false reason=1
I/ActivityManager( 1053): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x14000000 cmp=com.home.nmyshkin.quicktiles/net.dinglisch.android.tasker.Kid }
I/ActivityManager( 1053): Start proc com.home.nmyshkin.quicktiles for activity com.home.nmyshkin.quicktiles/net.dinglisch.android.tasker.Kid: pid=1645 uid=10029 gids={}
E/TC ( 1295): KPICollector: 1634499255283 platform process_start {"processName":"com.home.nmyshkin.quicktiles"}
I/dalvikvm( 1645): Debugger thread not active, ignoring DDM send (t=0x41504e4d l=38)
I/dalvikvm( 1645): Debugger thread not active, ignoring DDM send (t=0x41504e4d l=60)
E/TC ( 1295): KPICollector: 1634499255317 ActivityManager background {"component":"com.gacode.relaunchx/.AllApplications"}
E/TC ( 1295): KPICollector: 1634499255319 ActivityManager foreground {"component":"com.home.nmyshkin.quicktiles/net.dinglisch.android.tasker.Kid"}
D/ ( 1645): unable to unlink '/data/data/com.home.nmyshkin.quicktiles/shared_prefs/net.dinglisch.android.tasker.preffy.xml.bak': No such file or directory (errno=2)
D/dalvikvm( 1645): GC freed 7905 objects / 350624 bytes in 39ms
D/dalvikvm( 1645): GC freed 9893 objects / 366576 bytes in 39ms
D/dalvikvm( 1645): GC freed 10583 objects / 379016 bytes in 40ms
D/dalvikvm( 1645): GC freed 8001 objects / 204056 bytes in 55ms
I/global ( 1645): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
D/dalvikvm( 1645): GC freed 11001 objects / 538824 bytes in 45ms
D/LocationManager( 1645): Constructor: service = [email protected]
D/dalvikvm( 1645): GC freed 1040 objects / 176368 bytes in 50ms
I/global ( 1645): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
D/dalvikvm( 1645): GC freed 1018 objects / 252120 bytes in 40ms
D/ ( 1645): unable to unlink '/data/data/com.home.nmyshkin.quicktiles/shared_prefs/net.dinglisch.android.tasker.statey.xml.bak': No such file or directory (errno=2)
D/dalvikvm( 1645): GC freed 3917 objects / 222192 bytes in 43ms
D/dalvikvm( 1645): GC freed 6271 objects / 196128 bytes in 51ms
D/dalvikvm( 1645): GC freed 13055 objects / 517832 bytes in 56ms
D/dalvikvm( 1645): GC freed 44936 objects / 1603840 bytes in 64ms
W/InputManagerService( 1053): Window already focused, ignoring focus gain of: [email protected]
D/dalvikvm( 1645): GC freed 5770 objects / 288336 bytes in 49ms
D/ ( 1645): unable to unlink '/data/data/com.home.nmyshkin.quicktiles/shared_prefs/net.dinglisch.android.tasker.varry.xml.bak': No such file or directory (errno=2)
D/dalvikvm( 1645): GC freed 1148 objects / 83472 bytes in 40ms
D/ ( 1645): unable to unlink '/data/data/com.home.nmyshkin.quicktiles/shared_prefs/net.dinglisch.android.tasker.fixy.xml.bak': No such file or directory (errno=2)
V/Activity( 1362): performResume()
D/EPD#ActivityResume( 1053): resetRegion 4
D/NATIVE-EPD( 1053): epd_reset_region: 0x10
D/EPD#ActivityResume( 1053): resetRegion 5
D/NATIVE-EPD( 1053): epd_reset_region: 0x20
D/EPD#ActivityResume( 1053): resetRegion 6
D/NATIVE-EPD( 1053): epd_reset_region: 0x40
D/EPD#ActivityResume( 1053): resetRegion 7
D/NATIVE-EPD( 1053): epd_reset_region: 0x80
D/EPD#ActivityResume( 1053): Disable EPD for 350ms!!!!!!!!
E/TC ( 1295): KPICollector: 1634499258078 ActivityManager background {"component":"com.home.nmyshkin.quicktiles/net.dinglisch.android.tasker.Kid"}
E/TC ( 1295): KPICollector: 1634499258111 ActivityManager foreground {"component":"com.gacode.relaunchx/.AllApplications"}
D/dalvikvm( 1645): GC freed 2790 objects / 148896 bytes in 111ms
D/dalvikvm( 1362): GC freed 15222 objects / 941720 bytes in 132ms
D/ReLaunchApp( 1362): --- onResume(AllApps)
D/dalvikvm( 1645): GC freed 1637 objects / 99640 bytes in 95ms
E/QuickTiles( 1645): 20.34.18#E: error: Read Line: no SD present.
D/SurfaceFlinger( 1053): Frame buffer posted; elapsed time = 31 msecs
I/PowerManagerService( 1053): setPowerState: mPowerState=0x3 newState=0x3 noChangeLights=false reason=1
D/SurfaceFlinger( 1053): Frame buffer posted; elapsed time = 11 msecs
D/dalvikvm( 1386): GC freed 8203 objects / 298784 bytes in 44ms
D/SurfaceFlinger( 1053): Frame buffer posted; elapsed time = 14 msecs
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f040000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f020000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f020000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f040000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f020000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f020000
W/ResourceType( 1053): Resources don't contain package for resource number 0x7f060001
D/Searchables( 1053): Checking component ComponentInfo{com.google.android.providers.enhancedgooglesearch/com.google.android.providers.enhancedgooglesearch.Launcher}
D/SurfaceFlinger( 1053): Frame buffer posted; elapsed time = 11 msecs
D/dalvikvm( 1295): GC freed 1694 objects / 89152 bytes in 35ms
alexhorner said:
No luck after a few attempts inclusing a reboot I'm afraid. Attached is the logcat which complains of some failed link creations.
Click to expand...
Click to collapse
Sorry. I'll have to do it the hard way. I need to find out the correct syntax anyway for my other WIP.
nmyshkin said:
Sorry. I'll have to do it the hard way. I need to find out the correct syntax anyway for my other WIP.
Click to expand...
Click to collapse
No worries! Let me know if there is anything I can do to help
alexhorner said:
No worries! Let me know if there is anything I can do to help
Click to expand...
Click to collapse
Um....did you remember to copy the Qtiles folder (and contents) into /media from the sdcard (or the original zip)?
nmyshkin said:
Um....did you remember to copy the Qtiles folder (and contents) into /media from the sdcard (or the original zip)?
Click to expand...
Click to collapse
I did, and I also checked it's presence and contents via shell and ensured the permissions were loose
alexhorner said:
I did, and I also checked it's presence and contents via shell and ensured the permissions were loose
Click to expand...
Click to collapse
Huh. The apps works on my NSTG. And you did uninstall before the new install? Let me download what I posted and try that...
nmyshkin said:
Huh. The apps works on my NSTG. And you did uninstall before the new install? Let me download what I posted and try that...
Click to expand...
Click to collapse
I did indeed.
I uninstalled, moved the directory from SD to media using windows, checked with ADB shell that the files existed, and that they had loose permissions.
I then installed and attempted starting but no luck.
I also did several combinations of install, uninstall and reboots to ensure it wasn't a fluke
alexhorner said:
I did indeed.
I uninstalled, moved the directory from SD to media using windows, checked with ADB shell that the files existed, and that they had loose permissions.
I then installed and attempted starting but no luck.
I also did several combinations of install, uninstall and reboots to ensure it wasn't a fluke
Click to expand...
Click to collapse
I just downloaded what I posted and tried that. It also works.
MD5: 34c265a260da53ab9ac83d5ba154905a
CHMOD on the QTiles folder and contents = 775
Your logcat seems to be saying that the app never successfully installed. The files it is looking for in /data/data/com.home.nmyshkin.quicktiles are the xml configuration files normally installed by the apk package and one where variable values are stored as they change with operation and configuration. Something is definitely wrong. Did you ask RelaunchX to install this for you (which should invoke the stock package installer) or did you install via ADB, or.....?
nmyshkin said:
I just downloaded what I posted and tried that. It also works.
MD5: 34c265a260da53ab9ac83d5ba154905a
CHMOD on the QTiles folder and contents = 775
Your logcat seems to be saying that the app never successfully installed. The files it is looking for in /data/data/com.home.nmyshkin.quicktiles are the xml configuration files normally installed by the apk package and one where variable values are stored as they change with operation and configuration. Something is definitely wrong. Did you ask RelaunchX to install this for you (which should invoke the stock package installer) or did you install via ADB, or.....?
Click to expand...
Click to collapse
I have now fully uninstalled QuickTiles, recopied it over to my SD Card, recreated my QTiles directory in /media and installed using ReLaunchX - my usual install method is ADB, never have I installed anything using ReLaunchX before now.
Its working now. I guess yet another one of those unexplained issues... Quite annoying

Categories

Resources