cant convert bytes to KB
10,126
Solution 1
You can first use the length method to get the size of the file. then do it this way -
videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
long fileSizeInBytes = videoCursor.getLong(videoColumnIndex)
// Convert the bytes to Kilobytes (1 KB = 1024 Bytes)
long fileSizeInKB = fileSizeInBytes / 1024;
// Convert the KB to MegaBytes (1 MB = 1024 KBytes)
long fileSizeInMB = fileSizeInKB / 1024;
Solution 2
You have to divide the byte by 1024 to get them in kb and divide kb by 1024 to get mb and divide mb by 1024 to get gb and so on.
e.g.:
long kilobytes = file.length() / 1024;
long megabytes = kilobytes / 1024;
long gigabytes = megabytes / 1024;
Author by
young wolf
Updated on June 19, 2022Comments
-
young wolf almost 2 years
I have an android videoplayer which displays all videos on SD card with name and file size, but the size is displayed in bytes and I have not been able to convert it to KB,MB,GB etc.I tried dividing the int value by 1024 but its not working.It prints the wrong value. Can anyone help ?
SDVideos.java
import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.text.DecimalFormat; public class SDVideos extends Activity { private Cursor videoCursor; int videoColumnIndex; ListView videolist; int count; String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,MediaStore.Video.Thumbnails.VIDEO_ID }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sdvideos); initialization(); } private void initialization() { System.gc(); String[] videoProjection = { MediaStore.Video.Media._ID,MediaStore.Video.Media.DATA, MediaStore.Video.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE }; videoCursor =getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,videoProjection, null, null, null); count = videoCursor.getCount(); videolist = (ListView) findViewById(R.id.PhoneVideoList); videolist.setAdapter(new VideoListAdapter(this.getApplicationContext())); videolist.setOnItemClickListener(videogridlistener); } private AdapterView.OnItemClickListener videogridlistener = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); videoCursor.moveToPosition(position); String filename = videoCursor.getString(videoColumnIndex); Log.i("FileName: ", filename); //Intent intent = new Intent(VideoActivity.this, ViewVideo.class); //intent.putExtra("videofilename", filename); //startActivity(intent); }}; public class VideoListAdapter extends BaseAdapter { private Context vContext; public VideoListAdapter(Context c) { vContext = c; } public int getCount() { return videoCursor.getCount(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { View listItemRow; listItemRow = LayoutInflater.from(vContext).inflate(R.layout.listitem, parent, false); TextView txtTitle = (TextView)listItemRow.findViewById(R.id.txtTitle); TextView txtSize = (TextView)listItemRow.findViewById(R.id.txtSize); ImageView thumbImage = (ImageView)listItemRow.findViewById(R.id.imgIcon); videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME); videoCursor.moveToPosition(position); txtTitle.setText(videoCursor.getString(videoColumnIndex)); videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE); videoCursor.moveToPosition(position); txtSize.setText(" Size(KB):" + (videoCursor.getString(videoColumnIndex/205870))); int videoId = videoCursor.getInt(videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)); ContentResolver crThumb = getContentResolver(); BitmapFactory.Options options=new BitmapFactory.Options(); options.inSampleSize = 1; Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, videoId, MediaStore.Video.Thumbnails.MICRO_KIND, options); thumbImage.setImageBitmap(curThumb); return listItemRow; } } }
listitem. xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp"> <ImageView android:id="@+id/imgIcon" android:layout_width="90dip" android:layout_height="90dip" android:paddingLeft="10dip" android:paddingRight="10dip"/> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginRight="10dip"> <TextView android:id="@+id/txtTitle" android:layout_width="250dip" android:layout_height="wrap_content" android:gravity="left" android:textStyle="normal" android:textSize="15dp" android:textColor="#FF0000" android:paddingTop="30dp" android:paddingLeft="20dp" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" /> <TextView android:id="@+id/txtSize" android:layout_width="250dip" android:layout_height="wrap_content" android:gravity="right" android:paddingRight="20dp" android:paddingTop="20dp" android:textStyle="italic" android:textSize="12dp" android:textColor="#00FF00" /> </LinearLayout> </LinearLayout>