繁体   English   中英

缺少触摸事件

[英]Touch Event Missed

问:我正在尝试捕获代码中的触摸事件,它们似乎可以正常工作,但没有捕获屏幕的第一次触摸?

下面是日志打印输出,它知道有关触摸的信息,但不允许我捕获它吗? 任何帮助将非常感激。

我已经包含了ontouch事件,onCreate和setViewFeatures的代码:

在活动的顶部,我有

    public class MediaActivity extends Activity implements OnCompletionListener, OnErrorListener,   OnInfoListener,
    OnPreparedListener, OnSeekCompleteListener, OnTouchListener, OnVideoSizeChangedListener,
    SurfaceHolder.Callback, MediaController.MediaPlayerControl

    @Override
    public void onCreate(Bundle savedInstanceState)
    {

    super.onCreate(savedInstanceState);

    setViewFeatures();

    setSessionData();

    setContentView(R.layout.activity_media);



    setProgressBar();

    createPADialog();

    setDRMListeners();

    setClientAndServer();

    setButtonListeners();

    // Might use this for getting ref. for grabbing view when its first
    // displayed...
    // View v =
    // getWindow().getDecorView().findViewById(android.R.id.content);

    try
    {

        setSurfaceView();

    }
    catch (Exception e)
    {
        errorLevel = ERRORS.CRITICAL;
        callError("UNABLE TO RUN MediaActivity", errorLevel);
    }

    }

    private void setViewFeatures()
    {


    requestWindowFeature(Window.FEATURE_NO_TITLE);

    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
                  | View.SYSTEM_UI_FLAG_FULLSCREEN
                  | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
                  | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                  | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
                  | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(uiOptions);

    int flags = WindowManager.LayoutParams.FLAG_FULLSCREEN 
              | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
              | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
              | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
              | WindowManager.LayoutParams.FLAG_FULLSCREEN;

    getWindow().addFlags(flags);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event)
    {

    Log.d("TAG", "In onTouch ");
    try
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            if (topBar.isOpened())
            {
                callCloseBars();
            }
            else
            {
                callOpenBars();
            }
        }
    }
    catch (Exception e)
    {
        Log.d("TAG", e.getMessage());
    }

         return true;
    }


    10-14 07:33:09.900: I/InputReader(192): Touch event's action is 0x0 (deviceType=0) [pCnt=1, pending(waiting finished signal)=0, s=0.80 ]
    10-14 07:33:09.910: I/InputDispatcher(192): Delivering touch to current input target: action: 0x0
    10-14 07:33:09.910: I/InputDispatcher(192): Delivering touch to current input target: action: 0x0
    10-14 07:33:09.910: D/InputDispatcher(192): [drainOutboundQueueLocked] initialize cntPair(sender-receiver)
    10-14 07:33:09.910: I/InputQueue-JNI(192): Sending finished signal for input channel 'hidden nav  (client)' since it is being unregistered while an input message is still in progress.
    10-14 07:33:09.910: I/InputQueue-JNI(192): Ignoring finish signal on channel that is no longer registered.
    10-14 07:33:09.910: I/PowerManagerService(192): Ulight 3->7|0
    10-14 07:33:09.910: D/PowerManagerService(192): setLightBrightness : mButtonLight : 255
    10-14 07:33:10.060: D/Tethering(192): getTetheredIfacePairs
    10-14 07:33:10.080: I/InputReader(192): Touch event's action is 0x1 (deviceType=0) [pCnt=1,    pending(waiting finished signal)=0, s=]

如果侦听器从头开始调用(OnCreate),这是解决方案:

public class MainActivity extends ActionBarActivity implements OnTouchListener {
    View view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        view = (View)findViewById(R.id.view1);
        view.setOnTouchListener(this);
    }

@Override
public boolean onTouch(View v, MotionEvent event) {
     Log.d("TAG", "In onTouch ");
        try
        {
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                i = 1;
            }
        }
        catch (Exception e)
        {
            Log.d("TAG", e.getMessage());
        }
    return true;
   }
}

在影片开始播放时,您可以在代码中开始收听。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM