Android
MediaSession
खोज…
वाक्य - विन्यास
- शून्य मीडियासंचालनामा.कॉम
- शून्य मीडियासंचालनकम्पार्ट .सेटमैडियाबटनरसेवर (लंबित मब)
- void MediaSessionCompat.setCallback (MediaSessionCompat.Callback कॉलबैक)
- शून्य मीडियासंचालकंपनी ।सेटिव (बूलियन सक्रिय)
- MediaSessionCompat.Token MediaSessionCompat.getSessionToken ()
- शून्य मीडिया
- शून्य मीडियासंचालकैपहॉट.सेटपेकबैकस्टैट (प्लेबैकबैक स्टेट कॉमेट स्टेट)
- void MediaSessionCompat.setMetadata (MediaMetadataCompat मेटाडेटा)
टिप्पणियों
सर्वोत्तम अभ्यास के लिए, मीडिया-कॉम्पिटिटर लाइब्रेरी का उपयोग करें। उपलब्ध होने पर पुराने प्लेटफॉर्म संस्करणों पर समकक्ष विधियों के लिए मीडिया सत्र विधियों का अनुवाद करके पुस्तकालय पिछड़ी संगतता का ख्याल रखता है।
बटन ईवेंट प्राप्त करना और संभालना
यह उदाहरण एक Service
शुरू होने पर MediaSession
ऑब्जेक्ट बनाता है। Service
नष्ट हो जाने पर MediaSession
ऑब्जेक्ट जारी किया जाता है:
public final class MyService extends Service {
private static MediaSession s_mediaSession;
@Override
public void onCreate() {
// Instantiate new MediaSession object.
configureMediaSession();
}
@Override
public void onDestroy() {
if (s_mediaSession != null)
s_mediaSession.release();
}
}
निम्न विधि MediaSession
बटन कॉलबैक को MediaSession
कॉन्फ़िगर और कॉन्फ़िगर करती है:
private void configureMediaSession {
s_mediaSession = new MediaSession(this, "MyMediaSession");
// Overridden methods in the MediaSession.Callback class.
s_mediaSession.setCallback(new MediaSession.Callback() {
@Override
public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
Log.d(TAG, "onMediaButtonEvent called: " + mediaButtonIntent);
KeyEvent ke = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (ke != null && ke.getAction() == KeyEvent.ACTION_DOWN) {
int keyCode = ke.getKeyCode();
Log.d(TAG, "onMediaButtonEvent Received command: " + ke);
}
return super.onMediaButtonEvent(mediaButtonIntent);
}
@Override
public void onSkipToNext() {
Log.d(TAG, "onSkipToNext called (media button pressed)");
Toast.makeText(getApplicationContext(), "onSkipToNext called", Toast.LENGTH_SHORT).show();
skipToNextPlaylistItem(); // Handle this button press.
super.onSkipToNext();
}
@Override
public void onSkipToPrevious() {
Log.d(TAG, "onSkipToPrevious called (media button pressed)");
Toast.makeText(getApplicationContext(), "onSkipToPrevious called", Toast.LENGTH_SHORT).show();
skipToPreviousPlaylistItem(); // Handle this button press.
super.onSkipToPrevious();
}
@Override
public void onPause() {
Log.d(TAG, "onPause called (media button pressed)");
Toast.makeText(getApplicationContext(), "onPause called", Toast.LENGTH_SHORT).show();
mpPause(); // Pause the player.
super.onPause();
}
@Override
public void onPlay() {
Log.d(TAG, "onPlay called (media button pressed)");
mpStart(); // Start player/playback.
super.onPlay();
}
@Override
public void onStop() {
Log.d(TAG, "onStop called (media button pressed)");
mpReset(); // Stop and/or reset the player.
super.onStop();
}
});
s_mediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
s_mediaSession.setActive(true);
}
A2DP का उपयोग करके निम्न विधि मेटा डेटा ( HashMap
में संग्रहीत) डिवाइस को भेजता है:
void sendMetaData(@NonNull final HashMap<String, String> hm) {
// Return if Bluetooth A2DP is not in use.
if (!((AudioManager) getSystemService(Context.AUDIO_SERVICE)).isBluetoothA2dpOn()) return;
MediaMetadata metadata = new MediaMetadata.Builder()
.putString(MediaMetadata.METADATA_KEY_TITLE, hm.get("Title"))
.putString(MediaMetadata.METADATA_KEY_ALBUM, hm.get("Album"))
.putString(MediaMetadata.METADATA_KEY_ARTIST, hm.get("Artist"))
.putString(MediaMetadata.METADATA_KEY_AUTHOR, hm.get("Author"))
.putString(MediaMetadata.METADATA_KEY_COMPOSER, hm.get("Composer"))
.putString(MediaMetadata.METADATA_KEY_WRITER, hm.get("Writer"))
.putString(MediaMetadata.METADATA_KEY_DATE, hm.get("Date"))
.putString(MediaMetadata.METADATA_KEY_GENRE, hm.get("Genre"))
.putLong(MediaMetadata.METADATA_KEY_YEAR, tryParse(hm.get("Year")))
.putLong(MediaMetadata.METADATA_KEY_DURATION, tryParse(hm.get("Raw Duration")))
.putLong(MediaMetadata.METADATA_KEY_TRACK_NUMBER, tryParse(hm.get("Track Number")))
.build();
s_mediaSession.setMetadata(metadata);
}
निम्न विधि PlaybackState
सेट करता है। यह भी सेट करता है कि MediaSession
कौन से बटन पर कार्रवाई करेगा:
private void setPlaybackState(@NonNull final int stateValue) {
PlaybackState state = new PlaybackState.Builder()
.setActions(PlaybackState.ACTION_PLAY | PlaybackState.ACTION_SKIP_TO_NEXT
| PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_SKIP_TO_PREVIOUS
| PlaybackState.ACTION_STOP | PlaybackState.ACTION_PLAY_PAUSE)
.setState(stateValue, PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0)
.build();
s_mediaSession.setPlaybackState(state);
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow