Autore Topic: Servizio che rileva se un\'applicazione ha aperto la tastiera (input mode)  (Letto 547 volte)

Offline marcoiacobelli84

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    mac os
Ciao a tutti,
vorrei sapere se è possibile avviare un servizio che rileva l'apertura della tastiera da parte di una activity (browser, facebook ecc..)
Grazie in anticipo a chiunque abbia qualche idea in merito

Post unito: 10 Agosto 2013, 11:12:11 CEST
Aggiungo qualche dettaglio. Sto cercando di inviare un servizio in broadcast che rilevi la presenza della tastiera aperta.
Questo è il servizio:

Codice (Java): [Seleziona]
package com.example.tester2;


import java.util.List;



import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.IBinder;
import android.util.Log;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;

/**
 * Service to overlay a translucent red View
 * @author Hathy
 */

public class OverlayService extends Service {
 
         private static final String TAG = "MyService";

            private static final String BCAST_CONFIGCHANGED = "android.intent.action.??????????";
            private static Context mContext;
           
            @Override
            public IBinder onBind(Intent intent) {
                return null;
            }

            @Override
            public void onCreate() {
                Log.d(TAG, "onCreate()");

                mContext = this;

                IntentFilter filter = new IntentFilter();
                filter.addAction(BCAST_CONFIGCHANGED);
                this.registerReceiver(mBroadcastReceiver, filter);
            }

            @Override
            public void onDestroy() {

                Log.d(TAG, "onDestroy()");
            }

            @Override
            public void onStart(Intent intent, int startid) {
                Log.d(TAG, "onStart()");
            }

            public BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent myIntent) {

                    if ( myIntent.getAction().equals( BCAST_CONFIGCHANGED ) ) {

                        Log.d(TAG, "received->" + BCAST_CONFIGCHANGED);


                      /*  if(getResources().getConfiguration().keyboardHidden == Configuration.KEYBOARDHIDDEN_NO){
                            // it's Landscape
                            Log.d(TAG, "KEYBOARD");
                        }
                        else {
                            Log.d(TAG, "PORTRAIT");
                        }*/

                    }
                }
            };
        }
il problema è quale intent action di android usare, ho provato con configuration_changed, con input_method ma non va
"android.intent.action.??????????"

Nessuno sa aiutarmi?
« Ultima modifica: 13 Settembre 2013, 12:23:36 CEST da Ricky` »

Offline marcoiacobelli84

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    mac os
Re:Servizio che rileva se un\'applicazione ha aperto la tastiera (input mode)
« Risposta #1 il: 11 Agosto 2013, 01:39:58 CEST »
0
A quanto pare l'unica soluzione fattibile è quella di intercettare il resize della view che si modifica per integrare la tastiera. Vorrei mettere questa funzione in un servizio. nessuno può darmi qualche dritta?

Offline marcoiacobelli84

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    mac os
Re:Servizio che rileva se un\'applicazione ha aperto la tastiera (input mode)
« Risposta #2 il: 13 Settembre 2013, 12:09:02 CEST »
0
Ovviamente anche questo post risolto... da me. Grazie a tutti per la collaborazione.