package com.nf2m.fragment; import android.annotation.SuppressLint; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Bundle; import android.provider.BaseColumns; import android.provider.MediaStore; import android.provider.MediaStore.MediaColumns; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v4.os.TraceCompat; import android.support.v7.graphics.Palette; import android.support.v7.widget.RecyclerView; import android.view.View; import com.nf2m.R; import com.nf2m.activity.TarMediaPlayerActivity; import com.nf2m.adapter.SongCursorAdapter; import com.nf2m.listener.ActionItemClick; import com.nf2m.model.Library; import com.nf2m.model.Songs; import com.nf2m.preferences.Preferences; import com.nf2m.service.MediaPlayerService; import java.util.ArrayList; import java.util.Collections; @SuppressLint("NewApi") public class SongFragment extends BaseFragment implements ActionItemClick, com.nf2m.listener.OnItemClickListener { private RecyclerView lvSongList; private Library songs; private Cursor songCursor; private SongCursorAdapter songAdapter; private Preferences preferences; private int primaryColor; private int primaryDarkColor; private boolean isReferencedToService = false; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (isAlbumSong && songCursor.getCount() != 0) { playSong(0); } } /** * Activiteyi hazırlar.Degerler set edilir. */ void initFragment(@NonNull final Cursor songCursor, final Songs songs) { if (songCursor.getCount() == 0) { // TODO: 21/07/16 Şarkı yoksa ekranı // RelativeLayout noSongs = (RelativeLayout) view.findViewById(R.id.noSongs); // noSongs.setVisibility(View.VISIBLE); } initLvSongList(); initSongs(songs); setSongCursor(songCursor); initSongCursorAdapter(); lvSongListSetSongAdapter(); setListener(); setLayoutManager(); if (songCursor.getCount() < 15) { fastScroller.setVisibility(View.GONE); } preferences = Preferences.newInstance(getContext()); setSearchSelection(MediaColumns.TITLE); } private void setListener() { songAdapter.setOnItemClickListener(this); songAdapter.setOnLongItemClickListener(this); } private void lvSongListSetSongAdapter() { lvSongList.setAdapter(songAdapter); setLvLibraryList(lvSongList); } private void initSongCursorAdapter() { songAdapter = new SongCursorAdapter(getActivity(), songCursor); setLibraryAdapter(songAdapter); } private void initSongs(Songs songs) { this.songs = songs; setLibraries(songs); } private void setSongCursor(Cursor songCursor) { this.songCursor = songCursor; setLibraryCursor(songCursor); } private void initLvSongList() { lvSongList = (RecyclerView) view.findViewById(R.id.lvList); } @Nullable @Override public Cursor initSelectedItemCursor() { String[] songIds = getStringArray(BaseColumns._ID); String selection = getSelection(BaseColumns._ID, songIds); Cursor tempCursor = getContext().getContentResolver().query(songs.getUri(), null, selection, null, null); assert tempCursor != null; setSelectedSongNumber(tempCursor.getCount()); return tempCursor; } @Override public void actionClick(int position) { playSong(position); } private void playSong(int position) { //now playing list dışındakiler if (!isNowPlayingList()) { preferences.setPrefQueryUri(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.toString()); preferences.setPrefQueryWhere(getWhere()); preferences.setPrefQuerySelectionArgs(getSelectionArray()); MediaPlayerService.songsCursor = songCursor; isReferencedToService = true; } preferences.setPrefSongPos(position); if (!isAlbumSong) { TarMediaPlayerActivity.item_state = TarMediaPlayerActivity.ITEM_STATE_OTHER; } NowPlayingFragment.song_duration_state = 0; NowPlayingFragment.play_state = NowPlayingFragment.PAUSE; getActivity().sendBroadcast(new Intent(MediaPlayerService.ACTION_SONG_PLAY)); } @Override public void onClick(@NonNull View v) { switch (v.getId()) { case R.id.idFabPlay: super.onClick(v); if (!NowPlayingFragment.play_state.equalsIgnoreCase(NowPlayingFragment.PAUSE)) { playSong(0); } break; default: super.onClick(v); break; } } @Override public void onItemClick(int position) { if (actionMode != null) { toggleSelection(position); return; } if (isFilter) { position = getPositionInMainCursor(position); searchView.clearFocus(); searchView.onActionViewCollapsed(); linearLayoutManager.scrollToPosition(position); actionClick(position); } else { actionClick(position); } } @Override public void onDestroy() { super.onDestroy(); if (songCursor != null && !isReferencedToService) { songCursor.close(); } } }