Hi,
here is my activity class.
package com.musix.main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.Socket;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import com.musix.http.HttpRetriever;
import com.musix.model.Parser;
import com.musix.utils.UrlConstants;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class StreamingPlayerView extends Activity implements
OnClickListener,Parser
{
private ImageButton btnplay;
private TextView txtsongname,txtalbumartistname;
public boolean isRadioOn=false;
Handler handler=new Handler();
private static String title,albumTitle,artistName;
private ImageView imageView;
public NotificationService notificationService=null;
PrintWriter out=null;
BufferedReader in=null;
public static boolean isSocketOpen=false;
Socket socket=null;
public void onCreate(Bundle instance) {
super.onCreate(instance);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.streamingplayerview);
txtsongname = (TextView) findViewById(R.id.txtsongname);
txtalbumartistname = (TextView)
findViewById(R.id.txtalbumartistname);
imageView=(ImageView)findViewById(R.id.imgalbumart);
btnplay = (ImageButton) findViewById(R.id.play);
btnplay.setOnClickListener(this);
listenForTrackChange();
Intent serviceIntent=new Intent();
serviceIntent.setClass(getApplicationContext(),NotificationService.class);
bindService(serviceIntent,serviceConnection,Context.BIND_AUTO_CREATE);
startService(serviceIntent);
}
private void setTrackdetails()
{
try
{
txtsongname.setText(title);
txtalbumartistname.setText(albumTitle+"-"+artistName);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (StremingPlayer.streamingPlayer.isPlaying()) {
StremingPlayer.streamingPlayer.pause();
btnplay.setBackgroundResource(R.drawable.play_button);
LocalMediaPlayer.isPaused = true;
} else {
btnplay.setBackgroundResource(R.drawable.pause_button);
StremingPlayer.streamingPlayer.start();
}
break;
default:
break;
}
}
private void listenForTrackChange()
{
new Thread()
{
public void run()
{
if(!isSocketOpen)
{
try
{
try
{
String line;
socket=new Socket("host",1934);
out = new PrintWriter(socket.getOutputStream(),
true);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
out.println("OPEN CHANNEL ARTIST
"+StremingPlayer.CURRENTARTISTID);
while ((line=in.readLine())!=null)
{
String delimeter1="=";
String delimeter2="&";
String
trackid=line.substring(line.indexOf(delimeter1),line.indexOf(delimeter2));
List<NameValuePair> nameValues = new
ArrayList<NameValuePair>();
nameValues.add(new BasicNameValuePair("sid",
SplashScreen.sidvalue));
HttpRetriever httpThread = new
HttpRetriever(
UrlConstants.BASEURL +
UrlConstants.TRACK+"&id"+trackid, nameValues,
StreamingPlayerView.this,
UrlConstants.NEWSLISTINDEX);
httpThread.start();
isSocketOpen=true;
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (in!=null)
in.close();
}
catch (IOException e) {e.printStackTrace();};
if (out!=null) out.close();
try
{
if (socket!=null)
socket.close();
isSocketOpen=false;
}
catch (IOException e)
{
e.printStackTrace();
};
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}.start();
}
private void downloadImage(String url)
{
URL imageurl;
final Bitmap bitmapImage;
try
{
imageurl=new URL(url);
HttpURLConnection
httpConn=(HttpURLConnection)imageurl.openConnection();
httpConn.setDoOutput(true);
httpConn.connect();
InputStream is=httpConn.getInputStream();
bitmapImage=BitmapFactory.decodeStream(is);
handler.postDelayed(new Runnable() {
@Override
public void run()
{
imageView.setImageBitmap(bitmapImage);
}
},100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void parseData(String data, int index)
{
try
{
JSONObject object=new JSONObject(data);
title=object.optString("title");
albumTitle=object.optString("albumTitle");
artistName=object.optString("artistName");
handler.postDelayed(new Runnable() {
@Override
public void run()
{
setTrackdetails();
notificationService.ShowNotification1(title,
artistName);
}
},100);
downloadImage(object.optString("imageUrl"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void onDestroy()
{
super.onDestroy();
try
{
if(in!=null)
in.close();
if(out!=null)
out.close();
if(socket!=null)
socket.close();
isSocketOpen=false;
}
catch (Exception e)
{
e.printStackTrace();
}
}
public ServiceConnection serviceConnection=new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
notificationService=null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
notificationService=((NotificationService.LocalBinder)service).getservice();
}
};
}
On Tue, Jun 21, 2011 at 2:19 AM, Zsolt Vasvari <[email protected]> wrote:
> You just showed us about 30 lines of code. Do we look like mind
> readers who can figure out your problem without showing any kind of
> error log or stack trace?
>
> On Jun 21, 4:50 pm, Hitendrasinh Gohil <[email protected]>
> wrote:
> > Hi,
> > .when the activity is visible
> > there isnt any problem.but when i navigate to previous screen and
> > again going to this activity it causes forced close to my app.
> > how to resolve this?
> >
> >
> >
> >
> >
> > On Tue, Jun 21, 2011 at 12:41 AM, Zsolt Vasvari <[email protected]>
> wrote:
> > > Ok, cool. Do you have a question?
> >
> > > On Jun 21, 3:35 pm, Hitendrasinh Gohil <[email protected]>
> > > wrote:
> > > > Hi,
> >
> > > > I am using thread in my activity class.when the activity is visible
> > > > there isnt any problem.but when i navigate to previous screen and
> > > > again going to this activity it causes forced close to my app.I have
> > > > tried it by removing the thread then it works fine.
> >
> > > > Here is the code that i m calling from onCreate method.
> >
> > > > private void listenForTrackChange()
> > > > {
> > > > new Thread()
> > > > {
> > > > public void run()
> > > > {
> > > > if(!isSocketOpen)
> > > > {
> > > > try
> > > > {
> > > > try
> > > > {
> > > > String line;
> > > > socket=new
> > > Socket("host",1934);
> > > > out = new
> > > PrintWriter(socket.getOutputStream(), true);
> > > > in = new
> BufferedReader(new
> > > > InputStreamReader(socket.getInputStream()));
> > > > out.println("OPEN CHANNEL
> > > ARTIST
> > > > "+StremingPlayer.CURRENTARTISTID);
> > > > while
> > > ((line=in.readLine())!=null)
> > > > {
> > > > String
> delimeter1="=";
> > > > String
> delimeter2="&";
> > > > String
> >
> > >
> trackid=line.substring(line.indexOf(delimeter1),line.indexOf(delimeter2));
> > > > List<NameValuePair>
> > > nameValues = new
> > > > ArrayList<NameValuePair>();
> >
> > > nameValues.add(new BasicNameValuePair("sid",
> >
> > > SplashScreen.sidvalue));
> >
> > > HttpRetriever httpThread = new HttpRetriever(
> >
> > > UrlConstants.BASEURL + UrlConstants.TRACK+"&id"+trackid,
> > > > nameValues,
> >
> > > StreamingPlayerView.this, UrlConstants.NEWSLISTINDEX);
> >
> > > httpThread.start();
> >
> > > isSocketOpen=true;
> > > > }
> >
> > > > }
> > > > catch (IOException e)
> > > > {
> > > > e.printStackTrace();
> > > > }
> > > > finally
> > > > {
> > > > try
> > > > {
> > > > if (in!=null)
> > > > in.close();
> > > > }
> > > > catch (IOException e)
> > > {e.printStackTrace();};
> > > > if (out!=null)
> out.close();
> > > > try
> > > > {
> > > > if (socket!=null)
> > > >
> socket.close();
> > > > isSocketOpen=false;
> > > > }
> > > > catch (IOException e)
> > > > {
> > > > e.printStackTrace();
> > > > };
> > > > }
> > > > }
> > > > catch (Exception e)
> > > > {
> > > > e.printStackTrace();
> > > > }
> > > > }
> > > > }
> > > > }.start();
> > > > }
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
> >
> > --
> > Regards,
> > Hitendrasinh Gohil- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>
--
Regards,
Hitendrasinh Gohil
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en