DMAudioStreamer

License Release Android Arsenal

DMAudioStreamer library help you to integrate audio streaming in your application.

Android app on Google Play

App Screens

scr2 scr3 scr4 scr5 scr6 scr7

Usage

For a working implementation of this library clone/download this repository.

How to add Library in your project:

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
    implementation 'com.github.dibakarece:DMAudioStreamer:v1.0.5'
}
  1. Add below line code for your application to implement audio streaming :
public class MusicActivity extends AppCompatActivity implements CurrentSessionCallback{
       @Override
           protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);

               this.context = MusicActivity.this;
               streamingManager = AudioStreamingManager.getInstance(context);
           }

       @Override
       public void onStart() {
           super.onStart();
           if (streamingManager != null) {
               streamingManager.subscribesCallBack(this);
           }
       }

       @Override
       public void onStop() {
           super.onStop();
           if (streamingManager != null) {
               streamingManager.unSubscribeCallBack();
           }
       }

       @Override
           public void updatePlaybackState(int state) {
               switch (state) {
                   case PlaybackStateCompat.STATE_PLAYING:
                       break;
                   case PlaybackStateCompat.STATE_PAUSED:
                       break;
                   case PlaybackStateCompat.STATE_NONE:
                       break;
                   case PlaybackStateCompat.STATE_STOPPED:
                       break;
                   case PlaybackStateCompat.STATE_BUFFERING:
                       break;
               }
           }

           @Override
           public void playSongComplete() {
           }

           @Override
           public void currentSeekBarPosition(int progress) {
           }

           @Override
           public void playCurrent(int indexP, MediaMetaData currentAudio) {
           }

           @Override
           public void playNext(int indexP, MediaMetaData CurrentAudio) {
           }

           @Override
           public void playPrevious(int indexP, MediaMetaData currentAudio) {
           }

}
  1. You can play audio in Single/Multiple mode based on your code:
        streamingManager.setMediaList(`Your music list`);
        streamingManager.setPlayMultiple(`True/False`);
  1. For play music:
         MediaMetaData obj = new MediaMetaData();
         infoData.setMediaId(`id`); *Media Id*
         infoData.setMediaUrl(`source`); *Media source `https://yourmusicsource/talkies.mp3`*
         infoData.setMediaTitle(`title`);
         infoData.setMediaArtist(`artist`);
         infoData.setMediaAlbum(`album`);
         infoData.setMediaComposer(`composer`);
         infoData.setMediaDuration(`duration`); *Media Duration Sec.*
         infoData.setMediaArt(`image`); *Media Art*

         streamingManager.onPlay(`Your Music MetaData`);
  1. For notification controller(For more details please check my demo app):
         streamingManager.setShowPlayerNotification(true);
         streamingManager.setPendingIntentAct(`Create Your Pending Intent And Set Here`);
<service
     android:name="dm.audiostreamer.AudioStreamingService"
     android:enabled="true"
     android:exported="true" />
<receiver android:name="dm.audiostreamer.AudioStreamingReceiver">
      <intent-filter>
           <action android:name="dm.audiostreamer.close" />
           <action android:name="dm.audiostreamer.pause" />
           <action android:name="dm.audiostreamer.next" />
           <action android:name="dm.audiostreamer.play" />
           <action android:name="dm.audiostreamer.previous" />
           <action android:name="android.intent.action.MEDIA_BUTTON" />
           <action android:name="android.media.AUDIO_BECOMING_NOISY" />
      </intent-filter>
</receiver>

License

Copyright 2017 Dibakar Mistry

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.