Thanks for the response.
I'm pretty sure that's not it because I've put a debug statement first
off in the broadcast receiver's onReceive method and that isn't
appearing either. It almost seems that the activity's thread just
isn't getting switched to - so far I've only tested in the emulator,
could the emulator not be switching back to the activity's thread?
I've posted the seemingly relevant chunks of code below if that helps.
ACTIVITY ...
public class AudioProcessor extends Activity {
private AudioInterface service;
private ServiceConnection svcConn = new ServiceConnection(){
public void onServiceConnected(ComponentName className, IBinder
binder){
service = AudioInterface.Stub.asInterface(binder);
}
public void onServiceDisconnected(ComponentName className){
service = null;//NL = probably do more in onService
methods
}
};
private BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
Log.d("SHOWING!!!!!!!!!!!", "!!!!!!!!!!!!!!!!!!!");
showMessage(context, intent);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent serviceIntent = new Intent(this, AudioService.class);
bindService(serviceIntent, svcConn, BIND_AUTO_CREATE);
registerReceiver(receiver, new IntentFilter
(AudioService.BROADCAST_ACTION));
serviceIntent.setAction
("com.linnell.audioprocessor.AudioService");
startService(serviceIntent);*/
}
public void showMessage(Context context, Intent intent){
Log.d("SHOWING!!!!!!!!!!!", "!!!!!!!!!!!!!!!!!!!");
try{
String message = service.showMessage();
new AlertDialog.Builder(this).setTitle("Suggestion")
.setMessage(message)
.setNeutralButton("Close", new
DialogInterface.OnClickListener(){
public void onClick(DialogInterface dlg, int
sumthin){
//do nothing - it will close on its own
}
})
.show();
}
catch(final Throwable t){
Log.e("ERROR", "ERROR IN CODE");
svcConn.onServiceDisconnected(null);
}}}
SERVICE ...
public static final String BROADCAST_ACTION = "new_message";
private Intent broadcast = new Intent(BROADCAST_ACTION);
private Handler serviceHandler;
private Process myProcess;
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override public void onCreate() {
super.onCreate();
myProcess = new Process();
serviceHandler = new Handler();
serviceHandler.post(myProcess);
}
@Override public void onDestroy() {
super.onDestroy();
shutdownService();
}
private final AudioInterface.Stub mBinder = new AudioInterface.Stub()
{
public String showMessage(){
serviceHandler.post(myProcess);
return message;
}
public void stopService(){}
};
class Process implements Runnable{
public void run(){
//run then sits on a while(1), occasionally doing a sendBroadcast
(broadcast);
I know a lot of the stuff in onCreate would be better in onResume, etc
- I'm planning on cleaning all this up once the functionality is
there. :)
On Jan 20, 2:21 pm, Kevin Duffey <[email protected]> wrote:
> I am not entirely sure if I understand.. but is it possible when you raise
> the alert dialog, it's a different activity and that may be why it seems
> it's not working? Maybe you have to do something in the alert dialog... or
> maybe it blocks the main activity thread and that is why?
>
>
>
> On Wed, Jan 20, 2010 at 2:10 PM, Natalie <[email protected]> wrote:
> > Hi everyone,
> > I'm hoping to do some audio processing in a remote service (service
> > I've spawned onto its own thread); this will basically occur in a while
> > (1) loop - so constant processing. Occasionally I want to provide
> > some information back to the activity that is bound to the service;
> > I'm doing this by sending a broadcast from the service, that is
> > received by a broadcast receiver on the activity, which then uses the
> > activity's service connection to call into the service and get the
> > information needed; at this point the broadcast receiver makes an
> > alert dialog presenting the information to the user.
> > If I stay in my while(1) loop after raising the broadcast, the action
> > in the broadcast receiver never seems to occur. This is confusing to
> > me since the activity and service are in separate threads. If I end
> > the loop after raising the broadcast, the desired behavior on the
> > activity side occurs, but of course this isn't acceptable since I need
> > to be doing constant processing. Anyone have any suggestions of what
> > the probelm might be?
> > Thanks!
> > Natalie
>
> > --
> > 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]<android-developers%2Bunsubs
> > [email protected]>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
--
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