Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.Driiinx.musicslide;
- import android.app.Activity;
- import android.app.Fragment;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.media.AudioManager;
- import android.media.MediaMetadataRetriever;
- import android.media.MediaPlayer;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.PowerManager;
- import android.support.v4.app.ActionBarDrawerToggle;
- import android.support.v4.view.GravityCompat;
- import android.support.v4.widget.DrawerLayout;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.ListView;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import android.widget.Toast;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- public class MainActivity extends Activity implements View.OnClickListener, MediaPlayer.OnPreparedListener, Runnable {
- private String[] mPlanetTitles;
- private DrawerLayout mDrawerLayout;
- private ListView mDrawerList;
- private ImageView mMainImageView;
- private ImageView mTitleBarImageView;
- private TextView mTitleBarTitleTextView;
- private TextView mTitleBarArtistTextView;
- private ActionBarDrawerToggle mDrawerToggle;
- private SeekBar mSeekbar;
- private TextView mCurrentPositionText;
- private TextView mDurationText;
- ArrayList<MusicListArray> list;
- Context mContext = this;
- MediaPlayer play_media = new MediaPlayer();
- Thread thread_update_seekbar;
- byte[] album_art_byte;
- private CharSequence mDrawerTitle;
- private CharSequence mTitle;
- Bitmap bitmap;
- static int i = 0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mTitle = mDrawerTitle = getTitle();
- mSeekbar = (SeekBar) findViewById(R.id.seekBar);
- mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- mDrawerList = (ListView) findViewById(R.id.right_drawer);
- mCurrentPositionText = (TextView) findViewById(R.id.current_pos);
- mDurationText = (TextView) findViewById(R.id.duration);
- list = new ArrayList<MusicListArray>();
- //getActionBar().setDisplayHomeAsUpEnabled(true);
- getActionBar().setHomeButtonEnabled(true);
- System.out.println("Create");
- AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
- play_media.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
- play_media.setOnPreparedListener(this);
- play_media.setOnErrorListener(new MediaPlayer.OnErrorListener() {
- @Override
- public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
- String errormsg = "error : " + i + " - " + i2;
- if(i == MediaPlayer.MEDIA_ERROR_UNKNOWN){
- errormsg = errormsg + ". unknown ";
- }if(i == MediaPlayer.MEDIA_ERROR_SERVER_DIED){
- errormsg = errormsg + "1. server died ";
- }
- if(i2 == MediaPlayer.MEDIA_ERROR_IO){
- errormsg = errormsg + "2. io";
- }if(i2 == MediaPlayer.MEDIA_ERROR_MALFORMED){
- errormsg = errormsg + "2. malformed";
- }if(i2 == MediaPlayer.MEDIA_ERROR_TIMED_OUT){
- errormsg = errormsg + "2. timed out";
- }if(i2 == MediaPlayer.MEDIA_ERROR_UNSUPPORTED){
- errormsg = errormsg + "2. unsupported";
- }
- Toast.makeText(getApplicationContext(), errormsg, Toast.LENGTH_SHORT).show();
- return true;
- }
- });
- play_media.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mediaPlayer) {
- if(!play_media.isLooping()){
- try {
- mSeekbar.setProgress(0);
- play_media.reset();
- play_media.setDataSource(MainActivity.this, Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()+1).getFile_Dir()));
- play_media.prepare();
- int duration = play_media.getDuration() / 1000;
- int hours = getDurationHours(duration);
- int minutes = getDurationMinutes(duration,hours);
- int seconds = getDurationSecond(duration,hours,minutes);
- if(getDurationHours(duration) == 0){
- mDurationText.setText(minutes + ":" + seconds);
- }else{
- mDurationText.setText(hours + ":" + minutes + ":" + seconds);
- }
- mSeekbar.setMax(duration);
- //startThread();
- //play_media.start();
- mDrawerList.setItemChecked(mDrawerList.getCheckedItemPosition()+1, true);
- Uri uri = Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()).getFile_Dir());
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- mediaMetadataRetriever.setDataSource(MainActivity.this,uri);
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- //set Data to the Views
- if(album_art_byte != null){
- bitmap = BitmapFactory.decodeByteArray(album_art_byte, 0, album_art_byte.length);
- if(bitmap != null){
- bitmap = cropPicture(bitmap);
- mMainImageView.setImageBitmap(bitmap);
- }
- }
- mTitleBarImageView.setImageBitmap(list.get(mDrawerList.getCheckedItemPosition()).getAlbum_Art());
- mTitleBarTitleTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getTitle());
- mTitleBarArtistTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getArtist());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- });
- mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- play_media.seekTo(seekBar.getProgress() * 1000);
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- }
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- int hours = 0;
- int minutes = 0;
- int seconds = 0;
- while (progress > 3600) {
- hours++;
- progress = progress - 3600;
- }
- while (progress > 60) {
- minutes++;
- progress = progress - 3600;
- }
- seconds = progress;
- if (hours == 0) {
- if(seconds<10){
- mCurrentPositionText.setText("" + minutes + ":" + "0" + seconds);
- }else{
- mCurrentPositionText.setText(minutes + ":" + seconds);
- }
- } else {
- if(seconds<10 && minutes<10){
- mCurrentPositionText.setText(hours + ":" + "0" + minutes + ":" + "0" + seconds);
- }else if(seconds<10){
- mCurrentPositionText.setText(hours + ":" + minutes + ":" + "0" + seconds);
- }else if(minutes<10){
- mCurrentPositionText.setText(hours + ":" + "0" + minutes + ":" + seconds);
- }else{
- mCurrentPositionText.setText(hours + ":" + minutes + ":" + seconds);
- }
- }
- }
- });
- // Request audio focus for playback
- AudioManager.OnAudioFocusChangeListener afChangeListener = null;
- int result = am.requestAudioFocus(afChangeListener,
- // Use the music stream.
- AudioManager.STREAM_MUSIC,
- // Request permanent focus.
- AudioManager.AUDIOFOCUS_GAIN);
- //deserializeTrack();
- setVolumeControlStream(AudioManager.STREAM_MUSIC);
- mPlanetTitles = getResources().getStringArray(R.array.planets_array);
- boolean file_exist = deserializeTrack();
- if(file_exist == false){
- getMP3Files(this, Environment.getExternalStorageDirectory().getPath()+"/Music", list);
- serializeTrack();
- }
- ImageButton button_play = (ImageButton) findViewById(R.id.play_button);
- ImageButton button_next = (ImageButton) findViewById(R.id.next_button);
- ImageButton button_prev = (ImageButton) findViewById(R.id.prev_button);
- button_play.setOnClickListener(this);
- button_next.setOnClickListener(this);
- button_prev.setOnClickListener(this);
- StableArrayAdapter adapter = new StableArrayAdapter(this,R.layout.drawer_list_item,list);
- // Set the adapter for the list view
- mDrawerList.setAdapter(adapter);
- for (MusicListArray file : list) {
- Log.i("MP3 File name", file.getTitle());
- }
- //MenuListAdapter adapter = new MenuListAdapter(this, values);
- // ListAdapter adapter = new ArrayAdapter<String>(this,R.layout.drawer_list_item,list);
- //Stable Array .. löschen wauns ned geht
- //StableArrayAdapter adapter = new StableArrayAdapter(this,R.layout.drawer_list_item,list);
- // Set the adapter for the list view
- //mDrawerList.setAdapter(adapter);
- mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
- // Set the list's click listener
- mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
- mDrawerToggle = new ActionBarDrawerToggle(
- this, /* host Activity */
- mDrawerLayout, /* DrawerLayout object */
- R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
- R.string.drawer_open, /* "open drawer" description for accessibility */
- R.string.drawer_close /* "close drawer" description for accessibility */
- ) {
- public void onDrawerClosed(View view) {
- getActionBar().setTitle(mTitle);
- invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
- }
- public void onDrawerOpened(View drawerView) {
- getActionBar().setTitle(mDrawerTitle);
- invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
- }
- };
- mDrawerLayout.setDrawerListener(mDrawerToggle);
- if (savedInstanceState == null) {
- //getFragmentManager().beginTransaction()
- // .add(R.id.container, new PlaceholderFragment())
- // .commit();
- }
- }
- @Override
- public void run() {
- int currentPosition= 0;
- int total = play_media.getDuration();
- while (play_media!=null && currentPosition<total) {
- try {
- Thread.sleep(1000);
- currentPosition= play_media.getCurrentPosition();
- } catch (InterruptedException e) {
- return;
- } catch (Exception e) {
- return;
- }
- mSeekbar.setProgress(currentPosition / 1000);
- }
- }
- protected void onStop(){
- super.onStop();
- System.out.println("Stop");
- Toast.makeText(this,"Stopped",Toast.LENGTH_SHORT).show();
- //serializeTrack();
- }
- protected void onRestart(){
- super.onRestart();
- System.out.println("Restart");
- Toast.makeText(this,"Restarted",Toast.LENGTH_SHORT).show();
- //deserializeTrack();
- }
- protected void onDestroy(){
- super.onDestroy();
- System.out.println("Destroy");
- Toast.makeText(this,"Destroyed",Toast.LENGTH_SHORT).show();
- list.clear();
- play_media.reset();
- thread_update_seekbar.interrupt();
- //serializeTrack();
- }
- public void serializeTrack(){
- try {
- File file = new File("List.bin");
- FileOutputStream stream_out_file = new FileOutputStream(file);
- ObjectOutputStream stream_out_object = new ObjectOutputStream(stream_out_file);
- stream_out_object.writeObject(list);
- stream_out_object.close();
- stream_out_file.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public boolean deserializeTrack(){
- File file = new File("List.bin");
- if(file.exists()){
- try {
- FileInputStream stream_in_file = new FileInputStream(file);
- ObjectInputStream stream_in_object = new ObjectInputStream(stream_in_file);
- list = (ArrayList<MusicListArray>) stream_in_object.readObject();
- stream_in_object.close();
- stream_in_file.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }finally {
- return true;
- }
- }else{
- return false;
- }
- }
- private void getMP3Files(Context context, String directory,ArrayList<MusicListArray> mp3_list){
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- Uri uri;
- /*File[] files = Directory.listFiles(new MP3FileNameFilter());
- files = Directory.listFiles();*/
- File folder = new File(directory);
- for (File file : folder.listFiles()) {
- if (file.isFile()) {
- if (file.getName().endsWith(".mp3") || file.getName().endsWith(".MP3")) {
- uri = Uri.fromFile(file);
- mediaMetadataRetriever.setDataSource(context,uri);
- String artist = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
- String title = file.getName();
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- if(album_art_byte != null){
- bitmap = decodeSampledBitmapFromResource(album_art_byte,45,45);
- }else{
- bitmap = null;
- }
- /*if(album_art != null){
- //if(bitmap_art == null){
- bitmap = BitmapFactory.decodeByteArray(album_art, 0, album_art.length);
- //}
- //bitmap = bitmap_art;
- }else{
- //if(bitmap_no_art == null){
- bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
- //}
- //bitmap = bitmap_no_art;
- }
- if(bitmap == null){
- bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
- }*/
- if (title.indexOf(".") > 0)
- title = title.substring(0, title.lastIndexOf("."));
- if(artist == null){
- artist = getString(R.string.unknown_artist);
- }
- mp3_list.add(new MusicListArray(title,artist,file,bitmap));
- }
- }else if(file.isDirectory()){
- if(i != 3){
- getMP3Files(context, file.getPath(), mp3_list);
- i++;
- }else{
- i=0;
- }
- }
- }
- Collections.sort(mp3_list);
- /*for(int i=0;i<files.length;i++){
- mp3_list.add(new MusicListArray(files[i].getName(),"Test",files[i]));
- }*/
- //return mp3_list;
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- return super.onCreateOptionsMenu(menu);
- }
- public boolean onPrepareOptionsMenu(Menu menu) {
- boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
- menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
- return super.onPrepareOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- //int id = item.getItemId();
- //if (id == R.id.action_settings) return true;
- //return super.onOptionsItemSelected(item);
- // Öffnet und schließt den Navigation Drawer bei Klick auf den Titel/das Icon in der ActionBar
- if (item.getItemId() == android.R.id.home) {
- if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
- mDrawerLayout.closeDrawer(mDrawerList);
- } else {
- mDrawerLayout.openDrawer(mDrawerList);
- }
- }
- // Gibt den ActionBar-Buttons Funktionen
- switch (item.getItemId()) {
- case R.id.action_settings:
- // Tu' etwas!
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public void onClick(View view) {
- if(view.getId() == R.id.play_button){
- if(play_media.isPlaying()){
- play_media.pause();
- ImageButton button_play = (ImageButton) findViewById(R.id.play_button);
- button_play.setImageBitmap(BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_play));
- }else{
- play_media.start();
- ImageButton button_play = (ImageButton) findViewById(R.id.play_button);
- button_play.setImageBitmap(BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_pause));
- }
- }else if(view.getId() == R.id.next_button){
- try {
- mSeekbar.setProgress(0);
- play_media.reset();
- play_media.setDataSource(MainActivity.this, Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()+1).getFile_Dir()));
- play_media.prepare();
- int duration = play_media.getDuration() / 1000;
- int hours = getDurationHours(duration);
- int minutes = getDurationMinutes(duration,hours);
- int seconds = getDurationSecond(duration,hours,minutes);
- if(getDurationHours(duration) == 0){
- mDurationText.setText(minutes + ":" + seconds);
- }else{
- mDurationText.setText(hours + ":" + minutes + ":" + seconds);
- }
- mSeekbar.setMax(duration);
- //startThread();
- //play_media.start();
- mDrawerList.setItemChecked(mDrawerList.getCheckedItemPosition()+1, true);
- Uri uri = Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()).getFile_Dir());
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- mediaMetadataRetriever.setDataSource(MainActivity.this,uri);
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- //set Data to the Views
- if(album_art_byte != null){
- bitmap = BitmapFactory.decodeByteArray(album_art_byte, 0, album_art_byte.length);
- if(bitmap != null){
- bitmap = cropPicture(bitmap);
- mMainImageView.setImageBitmap(bitmap);
- }
- }
- mTitleBarImageView.setImageBitmap(list.get(mDrawerList.getCheckedItemPosition()).getAlbum_Art());
- mTitleBarTitleTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getTitle());
- mTitleBarArtistTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getArtist());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }else if(view.getId() == R.id.prev_button){
- try {
- play_media.reset();
- play_media.setDataSource(MainActivity.this, Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()-1).getFile_Dir()));
- play_media.prepare();
- int duration = play_media.getDuration() / 1000;
- int hours = getDurationHours(duration);
- int minutes = getDurationMinutes(duration,hours);
- int seconds = getDurationSecond(duration,hours,minutes);
- if(getDurationHours(duration) == 0){
- mDurationText.setText(minutes + ":" + seconds);
- }else{
- mDurationText.setText(hours + ":" + minutes + ":" + seconds);
- }
- mSeekbar.setMax(duration);
- mSeekbar.setProgress(0);
- //play_media.start();
- mDrawerList.setItemChecked(mDrawerList.getCheckedItemPosition()-1, true);
- Uri uri = Uri.fromFile(list.get(mDrawerList.getCheckedItemPosition()).getFile_Dir());
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- mediaMetadataRetriever.setDataSource(MainActivity.this,uri);
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- //set Data to the Views
- if(album_art_byte != null){
- bitmap = BitmapFactory.decodeByteArray(album_art_byte, 0, album_art_byte.length);
- if(bitmap != null){
- bitmap = cropPicture(bitmap);
- mMainImageView.setImageBitmap(bitmap);
- }
- }
- mTitleBarImageView.setImageBitmap(list.get(mDrawerList.getCheckedItemPosition()).getAlbum_Art());
- mTitleBarTitleTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getTitle());
- mTitleBarArtistTextView.setText(list.get(mDrawerList.getCheckedItemPosition()).getArtist());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- @Override
- public void onPrepared(MediaPlayer mediaPlayer) {
- play_media.start();
- }
- /**
- * A placeholder fragment containing a simple view.
- */
- public static class PlaceholderFragment extends Fragment {
- public PlaceholderFragment() {
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.drawer_list_item, container, false);
- return rootView;
- }
- }
- private class DrawerItemClickListener implements android.widget.AdapterView.OnItemClickListener {
- Uri uri;
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- try {
- play_media.reset();
- play_media.setDataSource(MainActivity.this, Uri.fromFile(list.get(position).getFile_Dir()));
- play_media.prepare();
- int duration = play_media.getDuration() / 1000;
- int hours = getDurationHours(duration);
- int minutes = getDurationMinutes(duration,hours);
- int seconds = getDurationSecond(duration,hours,minutes);
- if(getDurationHours(duration) == 0){
- mDurationText.setText(minutes + ":" + seconds);
- }else{
- mDurationText.setText(hours + ":" + minutes + ":" + seconds);
- }
- mSeekbar.setProgress(0);
- mSeekbar.setMax(duration);
- startThread();
- //mRunnable.run();
- } catch (IOException e) {
- e.printStackTrace();
- }
- //Get Views
- mMainImageView = (ImageView) findViewById(R.id.main_image);
- mTitleBarImageView = (ImageView) findViewById(R.id.icon_titlebar);
- mTitleBarTitleTextView = (TextView) findViewById(R.id.title_line_titlebar);
- mTitleBarArtistTextView = (TextView) findViewById(R.id.artist_line_titlebar);
- ImageButton play_button = (ImageButton) findViewById(R.id.play_button);
- uri = Uri.fromFile(list.get(position).getFile_Dir());
- mediaMetadataRetriever.setDataSource(MainActivity.this,uri);
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- //set Data to the Views
- if(album_art_byte != null){
- bitmap = BitmapFactory.decodeByteArray(album_art_byte, 0, album_art_byte.length);
- if(bitmap != null){
- bitmap = cropPicture(bitmap);
- mMainImageView.setImageBitmap(bitmap);
- }
- }
- mTitleBarImageView.setImageBitmap(list.get(position).getAlbum_Art());
- //bitmap = list.get(position).getAlbum_Art();
- //bitmap = Bitmap.createBitmap(bitmap,0,0,220,220);
- mMainImageView.setImageBitmap(bitmap);
- play_button.setImageBitmap(BitmapFactory.decodeResource(MainActivity.this.getResources(),R.drawable.ic_pause));
- mTitleBarTitleTextView.setText(list.get(position).getTitle());
- mTitleBarArtistTextView.setText(list.get(position).getArtist());
- mDrawerList.setItemChecked(position, true);
- getActionBar().setTitle(mTitle);
- //mDrawerLayout.closeDrawer(mDrawerList);
- }
- }
- private void selectItem(int position) {
- // Highlight the selected item, update the title, and close the drawer
- mDrawerList.setItemChecked(position, true);
- setTitle(mPlanetTitles[position]);
- mDrawerLayout.closeDrawer(mDrawerList);
- }
- //Stable ArrayAdapter .. löschen wauns ned geht
- private class StableArrayAdapter extends ArrayAdapter<MusicListArray> {
- HashMap<MusicListArray, Integer> mIdMap = new HashMap<MusicListArray, Integer>();
- Context context;
- ArrayList<MusicListArray> mArrayTrackList;
- MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
- Uri uri;
- //ArrayList einfüügen stott List!!!
- public StableArrayAdapter(Context context, int textViewResourceId,List<MusicListArray> objects) {
- super(context, textViewResourceId, objects);
- this.context = context;
- for (int i = 0; i < objects.size(); ++i) {
- mIdMap.put(objects.get(i), i);
- }
- mArrayTrackList = (ArrayList) objects;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent){
- // 1. Create inflater
- LayoutInflater inflater = (LayoutInflater) context
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- // 2. Get rowView from inflater
- View rowView = inflater.inflate(R.layout.drawer_list_item, parent, false);
- // 3. Get the two text view from the rowView
- TextView titleView = (TextView) rowView.findViewById(R.id.title_line);
- TextView artistView = (TextView) rowView.findViewById(R.id.artist_line);
- ImageView album_art = (ImageView) rowView.findViewById(R.id.icon);
- // 4. Set the text for textView
- titleView.setText(mArrayTrackList.get(position).getTitle());
- artistView.setText(mArrayTrackList.get(position).getArtist());
- uri = Uri.fromFile(mArrayTrackList.get(position).getFile_Dir());
- mediaMetadataRetriever.setDataSource(context, uri);
- album_art_byte = mediaMetadataRetriever.getEmbeddedPicture();
- if(album_art_byte != null){
- bitmap = decodeSampledBitmapFromResource(album_art_byte, 45, 45);
- if(bitmap != null){
- album_art.setImageBitmap(bitmap);
- }
- }
- return rowView;
- }
- @Override
- public long getItemId(int position) {
- MusicListArray item = getItem(position);
- return mIdMap.get(item);
- }
- @Override
- public boolean hasStableIds() {
- return true;
- }
- }
- public int calculateInSampleSize(
- BitmapFactory.Options options, int reqWidth, int reqHeight) {
- // Raw height and width of image
- final int height = options.outHeight;
- final int width = options.outWidth;
- int inSampleSize = 1;
- if (height > reqHeight || width > reqWidth) {
- final int halfHeight = height / 2;
- final int halfWidth = width / 2;
- // Calculate the largest inSampleSize value that is a power of 2 and keeps both
- // height and width larger than the requested height and width.
- while ((halfHeight / inSampleSize) > reqHeight
- && (halfWidth / inSampleSize) > reqWidth) {
- inSampleSize *= 2;
- }
- }
- return inSampleSize;
- }
- public Bitmap decodeSampledBitmapFromResource(byte[] image_stream,
- int reqWidth, int reqHeight) {
- Bitmap return_bitmap;
- // First decode with inJustDecodeBounds=true to check dimensions
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeByteArray(image_stream, 0, image_stream.length, options);
- // Calculate inSampleSize
- options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
- // Decode bitmap with inSampleSize set
- options.inJustDecodeBounds = false;
- return_bitmap = BitmapFactory.decodeByteArray(image_stream, 0, image_stream.length, options);
- if(return_bitmap != null){
- return cropPicture(return_bitmap);
- }else{
- return null;
- }
- }
- public Bitmap cropPicture(Bitmap bitmap){
- if (bitmap.getWidth() >= bitmap.getHeight()){
- bitmap = Bitmap.createBitmap(
- bitmap,
- bitmap.getWidth()/2 - bitmap.getHeight()/2,
- 0,
- bitmap.getHeight(),
- bitmap.getHeight()
- );
- }else{
- bitmap = Bitmap.createBitmap(
- bitmap,
- 0,
- bitmap.getHeight()/2 - bitmap.getWidth()/2,
- bitmap.getWidth(),
- bitmap.getWidth()
- );
- }
- return bitmap;
- }
- public void startThread(){
- thread_update_seekbar = new Thread(this);
- thread_update_seekbar.start();
- }
- public int getDurationHours(int progress){
- int hours = 0;
- while(progress > 3600){
- hours++;
- progress =progress - 3600;
- }
- return hours;
- }
- public int getDurationMinutes(int progress,int hours){
- int minutes = 0;
- progress = progress - (hours*3600);
- while(progress > 60){
- minutes++;
- progress =progress - 60;
- }
- return minutes;
- }
- public int getDurationSecond(int progress,int hours, int minutes){
- int seconds = 0;
- seconds = progress - (hours*3600) - (minutes*60);
- return seconds;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement