2015-01-04 3 views
0

Deezer Android SDK (0.10.16)를 사용 중이고 PlaylistPlayer로 노래를 재생하려고합니다. 내가 가장 기본적인 방법으로 그것을 사용하는 경우에도 이상한 문제가 : 사용자가 로그인 할 때이 코드는 아무것도 재생되지 않습니다사용자가 Android 용 Deezer SDK로 로그인했을 때 음악이 재생되지 않음

mPlaylistPlayer = new PlaylistPlayer(getActivity().getApplication(), mDeezerConnect, 
        new WifiAndMobileNetworkStateChecker()); 
mPlaylistPlayer.playPlaylist(451051205); 

합니다. 나는 아무 오류나 경고도, 음악은 다만 시작하지 않는다. (볼륨 컨트롤은이 경우 미디어 볼륨이 아닌 전화 볼륨을 변경하므로 미디어가 시작되지 않았 음을 확신합니다).

이상한 일은 : 사용자가 로그인하지 않은 상태에서 DeezerConnect가 생성되었지만 아직 인증되지 않은 경우 - 로그에 기록한 다음 로그 아웃하면 노래가 재생됩니다 (각각 30 초 동안).

public class DrawerActivity extends ActionBarActivity { 
... 
DeezerConnect deezerConnect = null; 
PlaylistPlayer mPlaylistPlayer = null; 
... 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    deezerConnect = new DeezerConnect(this, applicationID); 
    ... 
} 

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    //The user will connect here 
    if(position==2){ 
     fragmentManager.beginTransaction() 
       .replace(R.id.container, AccountsFragment.newInstance(deezerConnect)) 
       .commit(); 
    } 
} 

사용자는 내가, 사용자 정보를 가져 오는 또 다른 조각으로 돌아갈 수, 내 AccountsFragments

@Override 
public void onClick(View v) { 
    if(v == deezerConnectBtn){ 
     if(!mDeezerConnect.isSessionValid()) 
      mDeezerConnect.authorize(getActivity(), DrawerActivity.permissions, mDeezerDialogListener); 
     else { 
      mDeezerConnect.logout(getActivity()); 

      deezerLoginTxt.setText("You're not connected"); 
     } 
    } 
} 

이 작동에 연결 내 활동에

:

나는 이런 짓을 여전히 Boolean.toString (deezerConnect.isSessionValid()) == true를 얻습니다.

하지만이 액티비티에서 플레이어를 실행하면 Boolean.toString (deezerConnect.isSessionValid()) == false로 실행하면 PLAYING 상태가되고 Boolean.toString (deezerConnect.isSessionValid)) ==

내가) 내 활동 여기에 (이 같은 플레이어를 실행 사실 :

private static PlaylistPlayer mPlaylistPlayer; 
private static DeezerConnect mDeezerConnect; 

@Override 
public static PlayerFragment newInstance(String locationId, String playlistId, DeezerConnect deezerConnect, PlaylistPlayer playlistPlayer) { 
    PlayerFragment fragment = new PlayerFragment(); 
    ... 
    mPlaylistPlayer = playlistPlayer; 
    mDeezerConnect = deezerConnect; 
} 
... 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    if(mPlaylistPlayer==null){ 
     try { 
      mPlaylistPlayer = new PlaylistPlayer(getActivity().getApplication(), mDeezerConnect, 
        new WifiAndMobileNetworkStateChecker()); 
      mPlaylistPlayer.playPlaylist(mPlaylistId); 

      mListener.onFragmentInteraction(mPlaylistPlayer); 
     } catch (TooManyPlayersExceptions tooManyPlayersExceptions) { 
      tooManyPlayersExceptions.printStackTrace(); 
      Toast.makeText(getActivity(), "toomanyplayers", Toast.LENGTH_SHORT).show(); 
     } catch (DeezerError deezerError) { 
      Toast.makeText(getActivity(), "deezerError", Toast.LENGTH_SHORT).show(); 
      deezerError.printStackTrace(); 
     } 
    } 
} 

a의 통과 : 내 PlayerFragment에서 다음

getSupportFragmentManager().beginTransaction() 
       .replace(R.id.container, PlayerFragment.newInstance(locationId, playlistId, deezerConnect, mPlaylistPlayer)) 
       .commit(); 

그리고 마지막 조각에 대한 rguments는 일종의 더티지만 연결되지 않았을 때 매우 잘 작동합니다. 그리고 내가있을 때 플레이어 상태는 항상 멈 춥니 다.

+0

재생 목록을 시도하고 재생하는 순간 사용자가 로그인 한 순간부터 전체 과정을 붙여 넣을 수 있습니까? – XGouchet

+0

@XGouchet 답변을 많이 보내 주셔서 감사합니다. 처음 게시물을 업데이트했습니다. – NRausz

+0

로그인하기 전이나 후에 PlaylistPlayer를 만드시겠습니까? – XGouchet

답변

0

정말 해결책은 아니지만 문제는 에뮬레이터 (Genymotion 사용)에서만 발생하고 실제 장치에서는 발생하지 않는 것으로 나타났습니다. 나는 아직도 이유를 모르지만 최소한 음악은 재생됩니다.