ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年8月1日 星期三

unmount fail 的原因是因為沒有 任何一個 external storage 是 MOUTED,
所以 UNMOUNT 都沒作,
所以沒有 UNMOUNT DONE event,
所以 observer 沒有被 call 到.....

2012年7月27日 星期五

I/AudioService( 2563): AudioFocus abandonAudioFocus(): removing entry for android.media.AudioManager@2acbae28com.android.music.MediaPlaybackService$3@2acf7c78 E/JavaBinder( 2563): *** Uncaught remote exception! (Exceptions are not yet supported across processes.) E/JavaBinder( 2563): java.util.ConcurrentModificationException E/JavaBinder( 2563): at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64) E/JavaBinder( 2563): at android.media.AudioService.removeFocusStackEntry(AudioService.java:2214) E/JavaBinder( 2563): at android.media.AudioService.requestAudioFocus(AudioService.java:2331) E/JavaBinder( 2563): at android.media.IAudioService$Stub.onTransact(IAudioService.java:296) E/JavaBinder( 2563): at android.os.Binder.execTransact(Binder.java:320) E/JavaBinder( 2563): at com.android.server.SystemServer.init1(Native Method) E/JavaBinder( 2563): at com.android.server.SystemServer.main(SystemServer.java:730) E/JavaBinder( 2563): at java.lang.reflect.Method.invokeNative(Native Method) E/JavaBinder( 2563): at java.lang.reflect.Method.invoke(Method.java:507) E/JavaBinder( 2563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) E/JavaBinder( 2563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) E/JavaBinder( 2563): at dalvik.system.NativeStart.main(Native Method) I/AudioService( 2563): Remote Control registerMediaButtonEventReceiver() for ComponentInfo{com.android.music/com.android.music.MediaButtonIntentReceiver}

2012年7月25日 星期三

Muscic 的暫停與繼續..

Music 的 MediaPlaybackService.java :

用 logcat -s MediaPlaybackService 來看..

可以看到,Music 在background 繼續播放,在收到 AudioManger 的通之後,才會停止: case FOCUSCHANGE: // This code is here so we can better synchronize it with the code that // handles fade-in // AudioFocus is a new feature: focus updates are made verbose on purpose switch (msg.arg1) { case AudioManager.AUDIOFOCUS_LOSS: Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS"); if(isPlaying()) { mPausedByTransientLossOfFocus = false; } pause(); break;

但是其他的 event: AUDIOFOCUS_GAIN, AUDIOFOCUSE_LOSS_TRANSIENT 都沒收到。

從 code 來看, 這兩個 message 應該是在有電話進來的時候會有,先收到 LOSS_TRANSIENT。
等電話掛斷後,收到 AUDIOFOCUS_GAIN。




另外,BroadcastReceiver( ) 也有針對 play, pause, next, prev 的 cmd 操作,可以把 debugLog 修改一下: Log.v(LOGTAG,"mIntentReceiver.onReceive " + action + " / " + cmd);

這個 command 是給 Music app 自己用的 - 因為宣告成 class private variable.

上面的messasge 出來的是: V/MediaPlaybackService( 2610): mIntentReceiver.onReceive com.android.music.musicservicecommand / pause V/MediaPlaybackService( 2610): pause V/MediaPlaybackService( 2610): mIntentReceiver.onReceive com.android.music.musicservicecommand / pause V/MediaPlaybackService( 2610): pause V/MediaPlaybackService( 2610): onStartCommand

在 framework 裡找到用這個command(Intent) 的 code:

frameworks/base/core/java/android/widget/VideoView.java: private void openVideo() { if (mUri == null || mSurfaceHolder == null) { // not ready for playback just yet, will try again later return; } // Tell the music playback service to pause // TODO: these constants need to be published somewhere in the framework. Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", "pause"); mContext.sendBroadcast(i);

Official UNIX tool for Windows

MS 官方的 unix tool: http://www.microsoft.com/en-us/download/details.aspx?id=2391

還有 nfs server for windows system 喔。

2012年7月20日 星期五

BandLuxe C331

log after eject /dev/sr1 (CDROM) [ 1980.712292] usb 2-1.1.4.2: USB disconnect, address 9 [ 1991.773362] usb 2-1.1.4.2: new high speed USB device using ehci_hcd and address 10 [ 1991.883062] usb 2-1.1.4.2: New USB device found, idVendor=1a8d, idProduct=2006 [ 1991.883068] usb 2-1.1.4.2: New USB device strings: Mfr=3, Product=2, SerialNumber=4 [ 1991.883072] usb 2-1.1.4.2: Product: BandLuxe 3.5G HSPA Adapter [ 1991.883075] usb 2-1.1.4.2: Manufacturer: BandRich [ 1991.883078] usb 2-1.1.4.2: SerialNumber: EE45B741112F4E2CB3F00AF0444EE4D1F1B8C491 [ 1991.883233] usb 2-1.1.4.2: configuration #1 chosen from 1 choice [ 1991.884062] cdc_acm 2-1.1.4.2:1.1: ttyACM0: USB ACM device [ 1991.884909] cdc_acm 2-1.1.4.2:1.3: ttyACM1: USB ACM device [ 1991.886971] eth1: register 'cdc_ether' at usb-0000:00:1d.0-1.1.4.2, CDC Ethernet Device, 00:26:fa:ee:45:b7 [ 1991.887235] scsi11 : SCSI emulation for USB Mass Storage devices [ 1991.887369] usb-storage: device found at 10 [ 1991.887373] usb-storage: waiting for device to settle before scanning [ 1996.883439] usb-storage: device scan complete [ 1996.883961] scsi 11:0:0:0: CD-ROM BandRich CDROM 0001 PQ: 0 ANSI: 0 [ 1996.884421] scsi 11:0:0:1: Direct-Access BandRich CDROM 0001 PQ: 0 ANSI: 0
browsers/BrowserProvider.java
提供的幫助有: private static final String[] SUGGEST_PROJECTION = new String[] { "_id", "url", "title", "bookmark", "user_entered" }; ... 發現這個好像是指.."在網址列輸入" 的部份...

Browser : Clear Search History -- Part I

找一下 "的網頁指出" ..
結果在:

base/core/res/res/values-zh-rTW/strings.xml:

使用者是:
base/core/java/android/webkit/CallbackProxy.java





猜是 confirm dialog:



所以是在處理 javascript 的 alert。

其中有 mWebChromeClient 不是 null 時,才會處理。

在 browser/Tab.java 中,有使用 setWebChromeClient..

所以... setWebViewClient( ) 和 setWebChromeClient( ) 的不同處是...?

ref: http://stackoverflow.com/questions/2835556/whats-the-difference-between-setwebviewclient-vs-setwebchromeclient

setWebChromeClient( ) 會處理 JS Alert。

拿 http://www.mkyong.com/tutorials/android-tutorial/ 的 WebView Example code 來測試這個 javascript alert 頁面。


試著拿掉 setWebChromeClient( ) 這行,執行時,就不會出現 dialog

標籤

網誌存檔