Apri Attività trasparente dal servizio e utilizza BroadcastReceiver in servizio. Segui i passaggi in dettaglio.
1. Aprire un'attività trasparente dal Servizio
Intent i = new Intent(mContext, FloatingServiceSupportActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("action", "SpeechRegnition");
mContext.startActivity(i);
// Per l'uso di attività trasparente questo codice in AndroidManifest.xml
<activity
android:name=".FloatingServiceSupportActivity"
android:theme="@style/Theme.Transparent" />
2. Creare BroadcastReceiver in Service
BroadcastReceiver brOnActivityResult = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO:
}
};
3. Registrare questa trasmissione su onCreate of Service
IntentFilter brintent = new IntentFilter();
brintent.addAction("brActionFloatingServiceOnActivityResult");
mContext.registerReceiver(brOnActivityResult, brintent);
4. Annullare la registrazione questa trasmissione in OnDestroy of Service
mContext.unregisterReceiver(brOnActivityResult);
5. fare il lavoro in attività utilizzando startSubActivity e inviare trasmissioni dal di attività (FloatingServiceSupportActivity) onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Intent i = new Intent();
i.setAction("brActionFloatingServiceOnActivityResult");
i.putExtra("action", "initTextToSpeech");
mActivity.sendBroadcast(i);
mActivity.finish();
}
i no ho provato e non ho mai provato a usa onAtcivityResult in una classe Non-Activity ancora adesso ... – user1839514