亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? musicutils.java

?? Android平臺上的media player, iPhone風格
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.android.imusic;import java.io.File;import java.io.FileDescriptor;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Arrays;import java.util.Formatter;import java.util.HashMap;import java.util.Locale;import android.app.Activity;import android.app.ExpandableListActivity;import android.content.ComponentName;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.content.res.Resources;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.ColorFilter;import android.graphics.PixelFormat;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.media.MediaFile;//import android.media.MediaScanner;import android.net.Uri;import android.os.RemoteException;import android.os.Environment;import android.os.ParcelFileDescriptor;import android.provider.MediaStore;import android.provider.Settings;import android.util.Log;import android.view.SubMenu;import android.view.Window;import android.widget.TextView;import android.widget.Toast;public class MusicUtils {    private static final String TAG = "MusicUtils";    public interface Defs {        public final static int OPEN_URL = 0;        public final static int ADD_TO_PLAYLIST = 1;        public final static int USE_AS_RINGTONE = 2;        public final static int PLAYLIST_SELECTED = 3;        public final static int NEW_PLAYLIST = 4;        public final static int PLAY_SELECTION = 5;        public final static int GOTO_START = 6;        public final static int GOTO_PLAYBACK = 7;        public final static int PARTY_SHUFFLE = 8;        public final static int SHUFFLE_ALL = 9;        public final static int DELETE_ITEM = 10;        public final static int SCAN_DONE = 11;        public final static int CHILD_MENU_BASE = 12;        public final static int QUEUE = 13;    }        public static String makeAlbumsSongsLabel(Context context, int numalbums, int numsongs, boolean isUnknown) {        // There are several formats for the albums/songs information:        // "1 Song"   - used if there is only 1 song        // "N Songs" - used for the "unknown artist" item        // "1 Album"/"N Songs"         // "N Album"/"M Songs"        // Depending on locale, these may need to be further subdivided                StringBuilder songs_albums = new StringBuilder();        if (numsongs == 1) {            songs_albums.append(context.getString(R.string.onesong));        } else {            Resources r = context.getResources();            if (! isUnknown) {                String f = r.getQuantityText(R.plurals.Nalbums, numalbums).toString();                sFormatBuilder.setLength(0);                sFormatter.format(f, Integer.valueOf(numalbums));                songs_albums.append(sFormatBuilder);                songs_albums.append(context.getString(R.string.albumsongseparator));            }            String f = r.getQuantityText(R.plurals.Nsongs, numsongs).toString();            sFormatBuilder.setLength(0);            sFormatter.format(f, Integer.valueOf(numsongs));            songs_albums.append(sFormatBuilder);        }        return songs_albums.toString();    }        public static IMediaPlaybackService sService = null;    private static HashMap<Context, ServiceBinder> sConnectionMap = new HashMap<Context, ServiceBinder>();    public static boolean bindToService(Context context) {        return bindToService(context, null);    }    public static boolean bindToService(Context context, ServiceConnection callback) {        context.startService(new Intent(context, MediaPlaybackService.class));        ServiceBinder sb = new ServiceBinder(callback);        sConnectionMap.put(context, sb);        return context.bindService((new Intent()).setClass(context,                MediaPlaybackService.class), sb, 0);    }        public static void unbindFromService(Context context) {        ServiceBinder sb = (ServiceBinder) sConnectionMap.remove(context);        if (sb == null) {            Log.e("MusicUtils", "Trying to unbind for unknown Context");            return;        }        context.unbindService(sb);    }    private static class ServiceBinder implements ServiceConnection {        ServiceConnection mCallback;        ServiceBinder(ServiceConnection callback) {            mCallback = callback;        }                public void onServiceConnected(ComponentName className, android.os.IBinder service) {            sService = IMediaPlaybackService.Stub.asInterface(service);            initAlbumArtCache();            if (mCallback != null) {                mCallback.onServiceConnected(className, service);            }        }                public void onServiceDisconnected(ComponentName className) {            if (mCallback != null) {                mCallback.onServiceDisconnected(className);            }            sService = null;        }    }        public static int getCurrentAlbumId() {        if (sService != null) {            try {                return sService.getAlbumId();            } catch (RemoteException ex) {            }        }        return -1;    }    public static int getCurrentArtistId() {        if (MusicUtils.sService != null) {            try {                return sService.getArtistId();            } catch (RemoteException ex) {            }        }        return -1;    }    public static int getCurrentAudioId() {        if (MusicUtils.sService != null) {            try {                return sService.getAudioId();            } catch (RemoteException ex) {            }        }        return -1;    }        public static int getCurrentShuffleMode() {        int mode = MediaPlaybackService.SHUFFLE_NONE;        if (sService != null) {            try {                mode = sService.getShuffleMode();            } catch (RemoteException ex) {            }        }        return mode;    }        /*     * Returns true if a file is currently opened for playback (regardless     * of whether it's playing or paused).     */    public static boolean isMusicLoaded() {        if (MusicUtils.sService != null) {            try {                return sService.getPath() != null;            } catch (RemoteException ex) {            }        }        return false;    }    private final static int [] sEmptyList = new int[0];        public static int [] getSongListForCursor(Cursor cursor) {        if (cursor == null) {            return sEmptyList;        }        int len = cursor.getCount();        int [] list = new int[len];        cursor.moveToFirst();        int colidx = cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID);        if (colidx < 0) {            colidx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);        }        for (int i = 0; i < len; i++) {            list[i] = cursor.getInt(colidx);            cursor.moveToNext();        }        return list;    }    public static int [] getSongListForArtist(Context context, int id) {        final String[] ccols = new String[] { MediaStore.Audio.Media._ID };        String where = MediaStore.Audio.Media.ARTIST_ID + "=" + id + " AND " +         MediaStore.Audio.Media.IS_MUSIC + "=1";        Cursor cursor = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                ccols, where, null,                MediaStore.Audio.Media.ALBUM_KEY + ","  + MediaStore.Audio.Media.TRACK);                if (cursor != null) {            int [] list = getSongListForCursor(cursor);            cursor.close();            return list;        }        return sEmptyList;    }    public static int [] getSongListForAlbum(Context context, int id) {        final String[] ccols = new String[] { MediaStore.Audio.Media._ID };        String where = MediaStore.Audio.Media.ALBUM_ID + "=" + id + " AND " +                 MediaStore.Audio.Media.IS_MUSIC + "=1";        Cursor cursor = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                ccols, where, null, MediaStore.Audio.Media.TRACK);        if (cursor != null) {            int [] list = getSongListForCursor(cursor);            cursor.close();            return list;        }        return sEmptyList;    }    public static int [] getSongListForPlaylist(Context context, long plid) {        final String[] ccols = new String[] { MediaStore.Audio.Playlists.Members.AUDIO_ID };        Cursor cursor = query(context, MediaStore.Audio.Playlists.Members.getContentUri("external", plid),                ccols, null, null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER);                if (cursor != null) {            int [] list = getSongListForCursor(cursor);            cursor.close();            return list;        }        return sEmptyList;    }        public static void playPlaylist(Context context, long plid) {        int [] list = getSongListForPlaylist(context, plid);        if (list != null) {            playAll(context, list, -1, false);        }    }    public static int [] getAllSongs(Context context) {        Cursor c = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                new String[] {MediaStore.Audio.Media._ID}, MediaStore.Audio.Media.IS_MUSIC + "=1",                null, null);        try {            if (c == null || c.getCount() == 0) {                return null;            }            int len = c.getCount();            int[] list = new int[len];            for (int i = 0; i < len; i++) {                c.moveToNext();                list[i] = c.getInt(0);            }            return list;        } finally {            if (c != null) {                c.close();            }        }    }    /**     * Fills out the given submenu with items for "new playlist" and     * any existing playlists. When the user selects an item, the     * application will receive PLAYLIST_SELECTED with the Uri of     * the selected playlist, NEW_PLAYLIST if a new playlist     * should be created, and QUEUE if the "current playlist" was     * selected.     * @param context The context to use for creating the menu items     * @param sub The submenu to add the items to.     */    public static void makePlaylistMenu(Context context, SubMenu sub) {        String[] cols = new String[] {                MediaStore.Audio.Playlists._ID,                MediaStore.Audio.Playlists.NAME        };        ContentResolver resolver = context.getContentResolver();        if (resolver == null) {            System.out.println("resolver = null");        } else {            String whereclause = MediaStore.Audio.Playlists.NAME + " != ''";            Cursor cur = resolver.query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,                cols, whereclause, null,                MediaStore.Audio.Playlists.NAME);            sub.clear();            sub.add(1, Defs.QUEUE, 0, R.string.queue);            sub.add(1, Defs.NEW_PLAYLIST, 0, R.string.new_playlist);            if (cur != null && cur.getCount() > 0) {                //sub.addSeparator(1, 0);                cur.moveToFirst();                while (! cur.isAfterLast()) {                    Intent intent = new Intent();                    intent.putExtra("playlist", cur.getInt(0));//                    if (cur.getInt(0) == mLastPlaylistSelected) {//                        sub.add(0, MusicBaseActivity.PLAYLIST_SELECTED, cur.getString(1)).setIntent(intent);//                    } else {                        sub.add(1, Defs.PLAYLIST_SELECTED, 0, cur.getString(1)).setIntent(intent);//                    }                    cur.moveToNext();                }            }            if (cur != null) {                cur.close();            }        }    }    public static void clearPlaylist(Context context, int plid) {        final String[] ccols = new String[] { MediaStore.Audio.Playlists.Members._ID };        Cursor cursor = query(context, MediaStore.Audio.Playlists.Members.getContentUri("external", plid),                ccols, null, null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER);                if (cursor == null) {            return;        }        cursor.moveToFirst();//        while (!cursor.isAfterLast()) {//            cursor.deleteRow();//        }//        cursor.commitUpdates();        cursor.close();        return;    }        public static void deleteTracks(Context context, int [] list) {                String [] cols = new String [] { MediaStore.Audio.Media._ID, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路一ni| 精品成人在线观看| 91精品午夜视频| 国产精品午夜在线观看| 亚洲午夜久久久| 国产精品亚洲第一区在线暖暖韩国| av不卡在线播放| 精品国产免费久久| 日韩一区精品视频| 日本高清不卡视频| 国产精品家庭影院| 国产一区二区三区四区五区入口 | 欧美一区二区三区在线观看| 久久久精品免费网站| 日产欧产美韩系列久久99| 91网址在线看| 中文字幕国产一区| 人人狠狠综合久久亚洲| 在线观看三级视频欧美| 国产精品欧美精品| 国产成人精品亚洲777人妖| 欧美一区二区三区免费观看视频| 一区二区三区在线观看欧美 | 美国十次了思思久久精品导航| 99久久er热在这里只有精品15 | 国产精品123区| 日韩你懂的在线播放| 午夜伦理一区二区| 日本韩国欧美国产| 亚洲曰韩产成在线| 色综合欧美在线| 中文字幕一区二区三| 成人app下载| 国产精品久久久久久妇女6080| 国产精品一二三| 亚洲国产精品成人综合色在线婷婷 | 免费黄网站欧美| 欧美一级免费大片| 美女视频网站黄色亚洲| 欧美一级理论片| 韩国一区二区三区| 久久精品视频免费观看| 成人性生交大片免费看视频在线| 欧美韩国日本综合| 99免费精品视频| 亚洲男人天堂av| 欧美日韩国产大片| 日本成人中文字幕在线视频| 日韩一区二区电影在线| 激情综合色综合久久综合| 久久天堂av综合合色蜜桃网| 国产宾馆实践打屁股91| 国产精品福利一区| 在线视频国内自拍亚洲视频| 日韩电影在线观看网站| 欧美本精品男人aⅴ天堂| 狠狠久久亚洲欧美| 亚洲欧洲三级电影| 欧美中文字幕一区二区三区亚洲| 午夜精品视频一区| 国产日韩欧美综合一区| 色婷婷综合视频在线观看| 偷拍一区二区三区四区| 久久天天做天天爱综合色| jiyouzz国产精品久久| 亚洲国产日韩在线一区模特| 欧美成人a∨高清免费观看| 成人h动漫精品一区二| 亚洲成人自拍网| 国产日韩高清在线| 欧美日韩一区二区三区四区五区| 国产综合色产在线精品| 日韩美女啊v在线免费观看| 欧美色综合天天久久综合精品| 另类小说欧美激情| 一区二区三区影院| 2021中文字幕一区亚洲| 在线亚洲一区观看| 国产一区二区三区不卡在线观看 | 国产日韩v精品一区二区| 欧美日韩一区二区三区视频| 国产精品主播直播| 亚洲h精品动漫在线观看| 欧美激情在线看| 欧美一区二区三区日韩视频| 91免费精品国自产拍在线不卡| 免费观看成人av| 亚洲精品成人天堂一二三| 久久―日本道色综合久久| 欧美精品少妇一区二区三区| 成人永久aaa| 激情六月婷婷久久| 偷拍一区二区三区四区| 亚洲黄一区二区三区| 国产欧美日韩综合| 日韩精品一区二区在线观看| 欧美三级日韩在线| 日本韩国欧美一区| 99久久er热在这里只有精品15| 国产精品主播直播| 国产一区二区三区四区五区入口| 日韩和的一区二区| 亚洲成人av一区二区三区| 一区二区三区影院| 亚洲码国产岛国毛片在线| 国产精品高潮久久久久无| 国产视频一区在线观看| 精品久久久久久久一区二区蜜臀| 欧美久久一二区| 91福利小视频| 色综合av在线| 色先锋资源久久综合| 91在线视频在线| 色婷婷综合在线| 欧美亚洲一区二区三区四区| 91丨国产丨九色丨pron| 91蜜桃网址入口| 91国偷自产一区二区三区成为亚洲经典 | 欧美狂野另类xxxxoooo| 欧美日韩mp4| 欧美一区二区三区日韩| 日韩一区二区在线看片| 欧美电影免费观看高清完整版在线 | 亚洲人成影院在线观看| 1区2区3区国产精品| 亚洲精品视频一区| 亚洲综合激情小说| 亚洲成人1区2区| 免费成人在线观看视频| 久久精品国产999大香线蕉| 精品一区二区三区在线视频| 久久机这里只有精品| 激情综合网最新| av欧美精品.com| 在线精品视频小说1| 欧美日韩成人在线一区| 精品国产91九色蝌蚪| 久久精品亚洲国产奇米99| 综合激情成人伊人| 午夜精品一区二区三区免费视频| 日韩精品久久理论片| 国产一区二区久久| 99国产精品国产精品毛片| 欧美日韩午夜在线视频| 欧美xxxx在线观看| 国产精品国产自产拍在线| 偷窥国产亚洲免费视频| 国产中文字幕一区| 色综合久久天天| 欧美一区二区日韩一区二区| 久久久99免费| 亚洲一区二区三区四区在线免费观看| 日日夜夜免费精品视频| 国产黄人亚洲片| 欧美亚洲国产怡红院影院| 精品国产凹凸成av人导航| 成人免费视频在线观看| 日韩国产精品大片| 99国产精品99久久久久久| 欧美一级免费大片| 亚洲自拍偷拍九九九| 国产乱码字幕精品高清av | 成人网在线免费视频| 欧美久久高跟鞋激| 国产精品久久久久久久久免费相片 | 精品三级在线观看| 亚洲欧美区自拍先锋| 精品一区免费av| 欧美视频精品在线| 中文字幕一区在线观看| 免费久久99精品国产| 欧美午夜精品电影| 国产精品美女久久久久久2018| 日韩不卡一二三区| 91久久一区二区| 国产精品久久久久久久久图文区| 捆绑调教一区二区三区| 欧美日韩一区二区三区免费看| 国产精品免费丝袜| 国产一区二区看久久| 日韩欧美电影一区| 亚洲国产精品嫩草影院| 成人97人人超碰人人99| 精品精品欲导航| 日产精品久久久久久久性色| 欧美色综合影院| 亚洲综合视频在线观看| 99久久精品久久久久久清纯| 2014亚洲片线观看视频免费| 青青草国产成人99久久| 欧美群妇大交群的观看方式| 亚洲蜜桃精久久久久久久| 99r国产精品| 亚洲精品视频观看| 91久久精品网| 亚洲精品日日夜夜| 91黄色激情网站| 亚洲一区二三区| 欧美视频一区二区三区| 亚洲国产日韩av|