2013-03-24 57 views
3

我想創建一個android應用程序,讓用戶玩遊戲時需要用鍵輸入來傾斜屏幕。 當某個鍵被按下時,是否可以模擬加速度計數據?與此同時,我的應用程序運行時,是否可以禁用某些代碼真正的加速度計?我忘了提及我可以訪問完整的android源碼,再加上內核源碼,所以我甚至可以添加特定的代碼或創建一些java代碼來禁用或「僞造」加速度計輸入的來源。禁用加速度計並用鍵輸入模擬

+0

嗨@ Vektor88你設法做到了嗎?我有完全一樣的問題。 – Joe 2015-03-26 12:20:07

+0

@Joe最後我放棄了並轉移到另一個項目,但您可以嘗試使用輸入和注入軸事件來創建一個假加速度計。您可以通過正確的按鍵檢測和一些NDK代碼來創建設備(需要root) – Vektor88 2015-03-27 08:16:29

+0

謝謝。如果你有任何關於這個問題的更多信息的指針,應該非常感謝..我要儘可能深入地挖掘以實現這一目標。 – Joe 2015-03-29 22:15:09

回答

1

不,你不能。

加速度計是一項系統服務,您無法控制其他應用程序如何使用它,因此您無法禁用/覆蓋它。

通過將數據寫入/ dev /節的適當部分,可能會在根設備上僞造數值,但我不知道該使用哪個部分。

+0

這將是一個應用程序,我將開發一個特定的設備,它默認帶有root。僞造加速計的值就像'echo values>/path/to/dev'一樣簡單?如果我假設值,那麼設備傾斜不會影響加速度計? – Vektor88 2013-03-24 01:00:02

+0

@ Vektor88僞造這樣的值可能會也可能不起作用,但您仍然會受到傾斜設備的影響。這隻有在設備完全靜止時纔有效。 – 2013-03-24 01:25:38

+0

我忘了提及我可以訪問完整的android源代碼以及內核源代碼,所以我甚至可以添加特定的代碼或創建一些java代碼來禁用或「僞造」加速度計輸入源。 – Vektor88 2013-03-24 12:39:47

1

通過以下this教程,您可以輕鬆禁用加速度計。

注行

package com.badlogic.drop; 

import android.os.Bundle; 

import com.badlogic.gdx.backends.android.AndroidApplication; 
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; 

public class AndroidLauncher extends AndroidApplication { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     AndroidApplicationConfiguration config= new AndroidApplicationConfiguration(); 
     config.useAccelerometer = false; 
     config.useCompass = false; 

     initialize(new Drop(), config); 
    } 
} 

禰教程中的鏈接是libgdx和libgdx是一個Java遊戲開發框架,提供跨所有支持的平臺包括Android工作的統一的API。

+0

但是如何在運行時禁用它? (在Libgdx中,我的意思是) – WeirdElfB0y 2016-06-14 11:56:14