• No results found

Code Snippet: Provider’s MR and Controller’s MR are playing

Step 7: The Out-of-Band streaming runs from Content Source to Content Receiver

A.4. Code Snippet: Provider’s MR and Controller’s MR are playing

/***************************************

** see{@link ♯caseRemoteIsPlayingLocalIsStopped_resume

**(Context, ControlPoint, String, String)}

********************************************************/ private static void caseRemoteIsPlayingLocalIsPlaying(final Context context,

final ControlPoint ctrlp,

final String remoteUdn,final String localUdn){ //user decides what to do

String mUri;

String mUriMetaData;

//check whether the preference settings is set

SharedPreferences remote_play_local_play_pref= PreferenceManager .getDefaultSharedPreferences(context);

String mPref;

mPref= remote_play_local_play_pref.getString(“remote_play_local_play",“");

if((!mPref.equals(“"))&&(!mPref.equals(context.getResources().

getStringArray(R.array.recommendActionOptions2)[0]))){

//Preference was set and it is not up to the user option String[] actOpts= context.getResources().

getStringArray(R.array.recommendActionOptions);

if(mPref.equals(actOpts[0])){ //Stop me and playto remote

//first stop remote one

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

caseRemoteIsStoppedLocalIsPlaying_replay(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

}else if(mPref.equals(actOpts[1])){

//Stop me and resume on remote //first stop remote one

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

caseRemoteIsStoppedLocalIsPlaying_resume(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

A.4 Code Snippet: Provider’s MR and Controller’s MR are playing 125

}else if(mPref.equals(actOpts[2])){

//Stop remote one and replay on me

caseRemoteIsPlayingLocalIsStopped_replay(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

}else if(mPref.equals(actOpts[3])){

//Stop remote one and resume on me

caseRemoteIsPlayingLocalIsStopped_resume(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

}else if(mPref.equals(actOpts[4])){

//Exchange current media content and play over String mLocalUri;

String mLocalUriMetaData;

String mRemoteUriMetaData;

String mRemoteUri;

//get current remote playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", remoteUdn);

mRemoteUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mRemoteUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get current local playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", localUdn);

mLocalUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mLocalUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//set local to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", localUdn);

mFlag= avt.actionSetAVTransportURI(action, mRemoteUri,mRemoteUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", localUdn);

mFlag= avt.actionPlay(action);

//set remote to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", remoteUdn);

mFlag= avt.actionSetAVTransportURI(action, mLocalUri, mLocalUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", remoteUdn);

mFlag= avt.actionPlay(action);

}else if(mPref.equals(actOpts[5])){

//Exchange current playing String mLocalUri;

String mLocalUriMetaData;

String mRemoteUriMetaData;

String mRemoteUri;

String mRemotePosition;

String mLocalPosition;

//get current remote playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", remoteUdn);

mRemoteUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mRemoteUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get remote position

action= UtilDlna.getActionByName(ctrlp, “GetPositionInfo", remoteUdn);

mRemotePosition= avt.actionGetPositionInfo_RelTime(action);

//get current local playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", localUdn);

mLocalUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mLocalUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get current local playing media position

action= UtilDlna.getActionByName(ctrlp, “GetPositionInfo", localUdn);

mLocalPosition= avt.actionGetPositionInfo_RelTime(action);

A.4 Code Snippet: Provider’s MR and Controller’s MR are playing 127

//set local to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", localUdn);

mFlag= avt.actionSetAVTransportURI(action, mRemoteUri, mRemoteUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", localUdn);

mFlag= avt.actionPlay(action);

//set remote to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", remoteUdn);

mFlag= avt.actionSetAVTransportURI(action, mLocalUri, mLocalUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", remoteUdn);

mFlag= avt.actionPlay(action);

try{

Thread.sleep(3000);

} catch (InterruptedException e) { }

//seek both

action= UtilDlna.getActionByName(ctrlp, “Seek", remoteUdn);

mFlag= avt.actionSeekWithRelTime(action,UtilDlna.getRoughPostion(mLocalPosition));

action= UtilDlna.getActionByName(ctrlp, “Seek", localUdn);

mFlag= avt.actionSeekWithRelTime(action,UtilDlna.getRoughPostion(mRemotePosition));

else{} //stop both

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

} }

else{

//no preference stored or is set to up to user, //ask user to select the option

final Dialog actionSetDialog= new Dialog(context);

actionSetDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

actionSetDialog.setContentView(R.layout.custom_dlg_listview);

actionSetDialog.setCancelable(true);

((TextView)actionSetDialog.findViewById(R.id.TextView02)).setText(“Select Inten-tion");

ArrayAdapter<String> dlgArray = new ArrayAdapter<String>

(context,

R.layout.my_simple_list_item_mutiple_choice_1);

final String[] actOpts= context.getResources().

getStringArray(R.array.recommendActionOptions);

for(int i=0;i<actOpts.length;i++){

dlgArray.add(actOpts[i]);

}

final ListView actDlgll= (ListView)actionSetDialog.

findViewById(R.id.dlg_listview);

public void onClick(View v){

int pos= actDlgll.getCheckedItemPosition();

if(pos != ListView.INVALID_POSITION){

String act= (String)actDlgll.getItemAtPosition(pos);

if(act.equals(actOpts[0])){

//Stop me and playto remote //first stop remote one

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

caseRemoteIsStoppedLocalIsPlaying_replay(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

}else if(act.equals(actOpts[1])){

//Stop me and resume on remote //first stop remote one

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

caseRemoteIsStoppedLocalIsPlaying_resume(context, ctrlp, remoteUdn, localUdn);

A.4 Code Snippet: Provider’s MR and Controller’s MR are playing 129

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

}else if(act.equals(actOpts[2])){

//Stop remote one and replay on me

caseRemoteIsPlayingLocalIsStopped_replay(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

}else if(act.equals(actOpts[3])){

//Stop remote one and resume on me

caseRemoteIsPlayingLocalIsStopped_resume(context, ctrlp, remoteUdn, localUdn);

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

}else if(act.equals(actOpts[4])){

//Exchange current media content and play over String mLocalUri;

String mLocalUriMetaData;

String mRemoteUriMetaData;

String mRemoteUri;

//get current remote playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", remoteUdn);

mRemoteUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mRemoteUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get current local playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", localUdn);

mLocalUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mLocalUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//set local to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", localUdn);

mFlag= avt.actionSetAVTransportURI(action, mRemoteUri,mRemoteUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", localUdn);

mFlag= avt.actionPlay(action);

//set remote to play

action= UtilDlna.getActionByName(ctrlp, “SetAVTransportURI", remoteUdn);

mFlag= avt.actionSetAVTransportURI(action, mLocalUri,mLocalUriMetaData);

action= UtilDlna.getActionByName(ctrlp, “Play", remoteUdn);

mFlag= avt.actionPlay(action);

}else if(act.equals(actOpts[5])){

//Exchange current playing String mLocalUri;

String mLocalUriMetaData;

String mRemoteUriMetaData;

String mRemoteUri;

String mRemotePosition;

String mLocalPosition;

// get current remote playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", remoteUdn);

mRemoteUri= avt.actionGetMediaInfo_CurrentURI(action);

// get uri Meta data

mRemoteUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get remote position

action= UtilDlna.getActionByName(ctrlp, “GetPositionInfo", remoteUdn);

mRemotePosition= avt.actionGetPositionInfo_RelTime(action);

//get current local playing medium’s uri

action= UtilDlna.getActionByName(ctrlp, “GetMediaInfo", localUdn);

mLocalUri= avt.actionGetMediaInfo_CurrentURI(action);

//get uri Meta data

mLocalUriMetaData= avt.actionGetMediaInfo_CurrentURIMetaData(action);

//get current local playing media position

A.4 Code Snippet: Provider’s MR and Controller’s MR are playing 131

action= UtilDlna.getActionByName(ctrlp, “Play", localUdn);

mFlag= avt.actionPlay(action);

action= UtilDlna.getActionByName(ctrlp, “Play", remoteUdn);

mFlag= avt.actionPlay(action);

try{

Thread.sleep(3000);

} catch (InterruptedException e) { }

//seek both

action= UtilDlna.getActionByName(ctrlp, “Seek", remoteUdn);

mFlag= avt.actionSeekWithRelTime(action,

UtilDlna.getRoughPostion(mLocalPosition));

action= UtilDlna.getActionByName(ctrlp, “Seek", localUdn);

mFlag= avt.actionSeekWithRelTime(action,

UtilDlna.getRoughPostion(mRemotePosition));

} else{ //stop both

action= UtilDlna.getActionByName(ctrlp, “Stop", remoteUdn);

mFlag= avt.actionStop(action);

action= UtilDlna.getActionByName(ctrlp, “Stop", localUdn);

mFlag= avt.actionStop(action);

} });

actDlgBtn2.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v){ actionSetDialog.cancel();

}});

actionSetDialog.show();

} }

Table A.2.: Provider as MR and Interactor as MR are playing