Problema com Thread (É android mas é java)  XML
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Autor Mensagem
pedroroxd
GUJ Master
[Avatar]

Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline

Pessoal, estou com um problema..
Quando clico em um botão, começa a tocar uma música..

Tenho uma label que fica com o status (Parado, Tocando)..
Só que não estou conseguindo que ele fique com a label "Tocando" enquanto toca a música..
Ae pensei em usar uma Thread (porque sem ela, ele não muda a label)..
Fiz assim (método chamado quando clica no botão tocar):


Mas depois que termina a música da um erro

This message was edited 3 times. Last update was at 01/02/2011 16:29:35


Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!

"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."

'The dictionary is the only place that success comes before work!"

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."


"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."

"Olho por olho, e o mundo acabará cego."

"Se falam pelas costas, é sinal que eu to na frente"
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Que erro?
pedroroxd
GUJ Master
[Avatar]

Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline

No celular:
Desculpe!
A aplicação Record (processo br.com.pedro.Recorder) parou Inesperadamente. Tente novamente..

Não sei em que isso ajuda... A label fica tocando, e quando termina de tocar o áudio dá o erro
A Thread está correta?

This message was edited 1 time. Last update was at 01/02/2011 16:10:46


Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!

"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."

'The dictionary is the only place that success comes before work!"

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."


"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."

"Olho por olho, e o mundo acabará cego."

"Se falam pelas costas, é sinal que eu to na frente"
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

pedroroxd wrote:No celular:
Desculpe!
A aplicação Record (processo br.com.pedro.Recorder) parou Inesperadamente. Tente novamente..

Não sei em que isso ajuda... A label fica tocando, e quando termina de tocar o áudio dá o erro
A Thread está correta?


não manjo nem de tocar musica nem de android mais... coloca todo o conteudo da sua thread dentro de um try com um catch(Throwable), imprime alguma coisa la, sei la...

espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
marcio_gs
JavaEvangelist

Membro desde: 11/08/2008 08:10:37
Mensagens: 497
Offline

Usa listener, bem mais simples. Deve haver algum evento que indique o término da música.

Esse seu while aí só serve para gastar processador de forma inadequada.
pedroroxd
GUJ Master
[Avatar]

Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline

marcio_gs wrote:Usa listener, bem mais simples. Deve haver algum evento que indique o término da música.

Esse seu while aí só serve para gastar processador de forma inadequada.


Evento não tem..
Voce pode apenas verificar se está tocando com o if mp.isPlaying()..
Dá pra verificar a duração, mas apenas com mp.getDuration(), que retorna um int..

Continuo no aguardo, obrigado

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!

"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."

'The dictionary is the only place that success comes before work!"

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."


"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."

"Olho por olho, e o mundo acabará cego."

"Se falam pelas costas, é sinal que eu to na frente"
soaresinfo
JavaEvangelist
[Avatar]

Membro desde: 27/07/2003 15:40:13
Mensagens: 373
Localização: Uberlândia/MG
Offline

Também estou com um problema parecido por causa de thread. Coloquei a declaração inteira da thread num try catch, mas o android simplesmente encerra a aplicação.

E aí pedroroxd, resolveu o problema?

Anuncie aqui!
quikkoo
JavaEvangelist
[Avatar]

Membro desde: 30/10/2006 21:10:14
Mensagens: 406
Localização: minas
Offline

cara, vc pode registrar um observador para quando vc altera o estado de um arquivo de audio ou video
MediaPlayer.setOnBufferingUpdateListener

tenta isso, t+

the_book->is_on(the_table);
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

Acho que essa classe pode resolver:
http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Mesmo que pare inesperadamente, voce tem o log do erro no Logcat, da uma olhada lá e posta aqui.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
DeKoServidoni
Smalltalk
[Avatar]

Membro desde: 13/04/2011 08:00:12
Mensagens: 1
Offline

Olá pedroroxd

O erro acontece pois por questão de segurança o android não permite que uma thread diferente da principal
atualize a interface gráfica.

Para resolver esse problema utilize um Handler. A thread então envia uma mensagem ao handler indicando qual parte da interface
deve ser atualizada.

Nada melhor que o código para entender:



Espero que ajude, qualquer coisa pergunte.
 
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Ir para:   
Powered by JForum 2.1.8 © JForum Team