Tocando uma música causando falha no WP7 no telefone, mas não no emulador

13

Estou tentando implementar uma música em um jogo que começa a tocar e faz loops continuamente no Windows Phone 7 via XNA 4.0. No emulador, isso funciona bem; no entanto, quando implantado em um telefone, ele simplesmente exibe uma tela preta antes de retornar à tela inicial. Aqui está o código não autorizado em questão e comentar esse código faz com que o aplicativo funcione bem no telefone:

// in the constructor fields
private Song song;

// in the LoadContent() method
song = Content.Load<Song>("song");

// in the Update() method
if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing)
{
    MediaPlayer.Play(song);
}

O arquivo de música em si é um arquivo com 2:53 de comprimento e 2,28mb .wma com taxa de bits de 106kbps.

Novamente, isso funciona perfeitamente no emulador, mas não é executado no telefone. Obrigado por qualquer ajuda que você pode fornecer!

Michael Zehnich
fonte
4
Tente entrar em um try-catch e confira que exceção você está recebendo. Isso deve ajudar a obter alguma ajuda sobre isso.
quer
Bom conselho. A exceção lançada é "System.InvalidOperationException: a reprodução da música falhou, verifique se a música não está protegida por DRM". Além disso, tentei com a música codificada como MP3 e obtive os mesmos resultados (funcionou no emulador, não funciona no telefone). Uma outra questão: existe uma maneira fácil de imprimir / salvar texto de depuração no telefone ..? Minha única opção era desenhar o texto na tela, heh.
Michael Zehnich

Respostas:

13

Nós descobrimos isso. As informações estão disponíveis on-line, mas estão muito bem ocultas; por isso, postarei aqui para uma boa medida.

Basicamente, se o telefone estiver conectado a um computador e o software Zune estiver em execução, ele bloqueia a mídia no telefone, o que significa que os MediaPlayers nos aplicativos nunca terão permissão para reproduzir uma música.

Para que funcione, o usuário deve desconectar o telefone (por exemplo, desconectar o cabo USB) ou usar a ferramenta Windows Phone Connect, que foi projetada com isso em mente no que diz respeito à depuração: http: // msdn. microsoft.com/pt-br/library/gg180729%28v=VS.92%29.aspx - Eu não experimentei a ferramenta, mas a desmontagem funcionou como um encanto.

Além disso, quando o aplicativo não tem permissão para reproduzir uma música, ele trava, a menos que a exceção seja tratada, portanto, use blocos try / catch. A exceção capturada pode simplesmente ser ignorada.

Michael Zehnich
fonte
1
Ah, as alegrias do DRM.
Jari Komppa
1
É bom saber, irritante como o inferno que imagino que muitos desenvolvedores se deparem com esse problema.
precisa saber é o seguinte
2

A resposta de Michael Zehnich é realmente correta. No entanto, me deparei com outro problema que causa a mesma exceção.

O problema para mim era que estava faltando o recurso ID_CAP_MEDIALIB no meu WMAppManifest.xml.

<Capability Name="ID_CAP_MEDIALIB"/>

Espero que isto ajude.

mikeesouth
fonte