how to get notified(or Listen) for the changes in SD card

Put your problem here if it does not fit any of the other categories.

how to get notified(or Listen) for the changes in SD card

Postby hnmapara » Thu Aug 13, 2009 8:09 pm

Hi All,

I am creating an app and the requirement is - I have to listen to the SD card for new data comes in.

Whenever a new file is downloaded into SD card , I want to be notified.(or say , I want to listen for changes)

I searched, but can't get any useful help.

Please help me in this issue.

Any code sample, link will be nice to have.

Thanks
Harshit
hnmapara
Freshman
Freshman
 
Posts: 9
Joined: Wed Jul 22, 2009 8:19 pm

Top

Postby arams » Fri Aug 14, 2009 12:42 pm

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. import java.io.File;
  3.  
  4.  
  5.  
  6. import android.app.Activity;
  7.  
  8. import android.content.BroadcastReceiver;
  9.  
  10. import android.content.Context;
  11.  
  12. import android.content.Intent;
  13.  
  14. import android.content.IntentFilter;
  15.  
  16. import android.os.Bundle;
  17.  
  18. import android.os.Environment;
  19.  
  20. import android.os.StatFs;
  21.  
  22. import android.widget.LinearLayout;
  23.  
  24. import android.widget.TextView;
  25.  
  26.  
  27.  
  28. public class MemoryStatus extends Activity {
  29.  
  30.         TextView tvFlashCardCapacity;
  31.  
  32.         TextView tvInternalMemoryCapacity;
  33.  
  34.  
  35.  
  36.         @Override
  37.  
  38.         public void onResume() {
  39.  
  40.                 super.onResume();
  41.  
  42.  
  43.  
  44.                 IntentFilter intentFilterForMemory =new IntentFilter();
  45.  
  46.        
  47.  
  48.                 registerReceiver(mMemoryInfoReceiver, intentFilterForMemory);
  49.  
  50.                 updateMemorySize();
  51.  
  52.         }
  53.  
  54.  
  55.  
  56.         @Override
  57.  
  58.         public void onPause() {
  59.  
  60.                 super.onPause();
  61.  
  62.  
  63.  
  64.                 unregisterReceiver(mMemoryInfoReceiver);
  65.  
  66.         }
  67.  
  68.  
  69.  
  70.         private BroadcastReceiver mMemoryInfoReceiver = new BroadcastReceiver() {
  71.  
  72.  
  73.  
  74.                 public void onReceive(Context context, Intent intent) {
  75.  
  76.                         updateMemorySize();
  77.  
  78.                 }
  79.  
  80.  
  81.  
  82.                
  83.  
  84.         };
  85.  
  86.  
  87.  
  88.         private void updateMemorySize() {
  89.  
  90.                 String status = Environment.getExternalStorageState();
  91.  
  92.  
  93.  
  94.                 if (status.equals(Environment.MEDIA_MOUNTED)) {
  95.  
  96.                         try {
  97.  
  98.                                 File path = Environment.getExternalStorageDirectory();
  99.  
  100.                                 StatFs stat = new StatFs(path.getPath());
  101.  
  102.                                 long blockSize = stat.getBlockSize();
  103.  
  104.                                 long totalBlocks = stat.getBlockCount();
  105.  
  106.                                 long availableBlocks = stat.getAvailableBlocks();
  107.  
  108.  
  109.  
  110.                                 // free/total memory in the SD card
  111.  
  112.                                 tvFlashCardCapacity.setText("SD card: "
  113.  
  114.                                                 + formatMemorySize(availableBlocks * blockSize) + " / "
  115.  
  116.                                                 + formatMemorySize(totalBlocks * blockSize));
  117.  
  118.                         } catch (IllegalArgumentException e) {
  119.  
  120.                                 // this can occur if the SD card is removed, but we haven't
  121.  
  122.                                 // received the
  123.  
  124.                                 // ACTION_MEDIA_REMOVED Intent yet.
  125.  
  126.                                 status = Environment.MEDIA_REMOVED;
  127.  
  128.                         }
  129.  
  130.                 } else {
  131.  
  132.                         tvFlashCardCapacity.setText("SD card: unavailable");
  133.  
  134.                 }
  135.  
  136.  
  137.  
  138.                 File path = Environment.getDataDirectory();
  139.  
  140.                 StatFs stat = new StatFs(path.getPath());
  141.  
  142.                 long blockSize = stat.getBlockSize();
  143.  
  144.                 long totalBlocks = stat.getBlockCount();
  145.  
  146.                 long availableBlocks = stat.getAvailableBlocks();
  147.  
  148.  
  149.  
  150.                 // free/total memory in the internal memory
  151.  
  152.                 tvInternalMemoryCapacity.setText("Internal memory: "
  153.  
  154.                                 + formatMemorySize(availableBlocks * blockSize) + " / "
  155.  
  156.                                 + formatMemorySize(totalBlocks * blockSize));
  157.  
  158.         }
  159.  
  160.  
  161.  
  162.         private String formatMemorySize(long size) {
  163.  
  164.                 String suffix = null;
  165.  
  166.  
  167.  
  168.                 if (size >= 1024) {
  169.  
  170.                         suffix = "KB";
  171.  
  172.                         size /= 1024;
  173.  
  174.                         if (size >= 1024) {
  175.  
  176.                                 suffix = "MB";
  177.  
  178.                                 size /= 1024;
  179.  
  180.                         }
  181.  
  182.                 }
  183.  
  184.  
  185.  
  186.                 StringBuilder resultBuffer = new StringBuilder(Long.toString(size));
  187.  
  188.  
  189.  
  190.                 int commaOffset = resultBuffer.length() - 3;
  191.  
  192.                 while (commaOffset > 0) {
  193.  
  194.                         resultBuffer.insert(commaOffset, ',');
  195.  
  196.                         commaOffset -= 3;
  197.  
  198.                 }
  199.  
  200.  
  201.  
  202.                 if (suffix != null)
  203.  
  204.                         resultBuffer.append(suffix);
  205.  
  206.                 return resultBuffer.toString();
  207.  
  208.         }
  209.  
  210.  
  211.  
  212.         @Override
  213.  
  214.         public void onCreate(Bundle savedInstanceState) {
  215.  
  216.                 super.onCreate(savedInstanceState);
  217.  
  218.                 //...
  219.  
  220.                 LinearLayout l=new LinearLayout(this);
  221.  
  222.                 tvFlashCardCapacity = new TextView(this);//(TextView) findViewById(R.id.tvFlashCard);
  223.  
  224.                 tvInternalMemoryCapacity = new TextView(this);//(TextView) findViewById(R.id.tvInternalMemory);
  225.  
  226.                 l.addView(tvFlashCardCapacity);
  227.  
  228.                 l.addView(new TextView(this));
  229.  
  230.                 l.addView(tvInternalMemoryCapacity);
  231.  
  232.                 this.setContentView(l);
  233.  
  234.         }
  235.  
  236. }
  237.  
  238.  
Parsed in 0.044 seconds, using GeSHi 1.0.8.4
arams
Experienced Developer
Experienced Developer
 
Posts: 89
Joined: Fri May 08, 2009 7:45 am

Top

Return to Other Coding-Problems

Who is online

Users browsing this forum: No registered users and 19 guests