package com.iwedia.service.system; import java.util.Timer; import java.util.TimerTask; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.RemoteException; import android.util.Log; import com.iwedia.comm.enums.FilterType; import com.iwedia.service.IWEDIAService; import com.iwedia.service.content.ContentFilterPVRRecorded; import com.iwedia.service.system.external_and_local_storage.ExternalAndLocalStorageManager; public class MediaMounted { private String LOG_TAG = "MediaMounted"; private String mediaPreviousState = Intent.ACTION_MEDIA_UNMOUNTED; private MediaMountedReceiver mediaMountedReceiver; public MediaMounted() { registerMediaMountedBroadcastReciver(); } private class MediaMountedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (action != null) { if (action.equals(Intent.ACTION_MEDIA_MOUNTED) && !mediaPreviousState .equals(Intent.ACTION_MEDIA_REMOVED)) { Log.d(LOG_TAG, "Media mounted - " + data); ExternalAndLocalStorageManager.getInstance().setUsbPath( intent.getDataString()); SystemControl.broadcastMediaMounted(data); TimerTask timerTask = new TimerTask() { @Override public void run() { if (IWEDIAService.DEBUG) Log.e(LOG_TAG, "starting reinitialize of PVR favourite elements at timer"); try { ContentFilterPVRRecorded cfPVRRecorded = (ContentFilterPVRRecorded) (IWEDIAService .getInstance().getDtvManagerProxy() .getContentListControl()) .getContentFilter(FilterType.PVR_RECORDED); if (cfPVRRecorded != null) { cfPVRRecorded.reinitialize(); } } catch (RemoteException e) { e.printStackTrace(); } } }; Timer timer = new Timer(); timer.schedule(timerTask, 3000); if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "ACTION_MEDIA_MOUNTED"); } } else if (action.equals(Intent.ACTION_MEDIA_NOFS) || action.equals(Intent.ACTION_MEDIA_UNMOUNTABLE)) { Log.d(LOG_TAG, "No or bad filesystem - " + data); SystemControl.broadcastMediaNotSupported(data); } else if (action.equals(Intent.ACTION_MEDIA_EJECT) || action.equals(Intent.ACTION_MEDIA_REMOVED)) { ExternalAndLocalStorageManager.getInstance() .deselectUsbPath(); SystemControl.broadcastMediaEjected(data); if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "removal action: " + action); } try { ContentFilterPVRRecorded cfPVRRecorded = (ContentFilterPVRRecorded) (IWEDIAService .getInstance().getDtvManagerProxy() .getContentListControl()) .getContentFilter(FilterType.PVR_RECORDED); if (cfPVRRecorded != null) { cfPVRRecorded.mediaEjected(); } } catch (RemoteException e) { e.printStackTrace(); } } mediaPreviousState = action; } } } private void registerMediaMountedBroadcastReciver() { mediaMountedReceiver = new MediaMountedReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_EJECT); // intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL); // intentFilter.addAction(Intent.ACTION_MEDIA_BUTTON); // intentFilter.addAction(Intent.ACTION_MEDIA_CHECKING); intentFilter.addAction(Intent.ACTION_MEDIA_NOFS); intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED); // intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTABLE); // intentFilter.addAction(Intent.ACTION_MEDIA_SHARED); // intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED); // intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); // intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentFilter.addDataScheme("file"); IWEDIAService.getContext().registerReceiver(mediaMountedReceiver, intentFilter); } }