2017-08-08 6 views
0

CyanogenMod/Lineage OSにはステータスバーをダブルタップすることで画面を回転させる機能があります。デバイスをロックしないで画面を消すだけです。私が知る限り、これは通常のアプリでは不可能です。ストア上のアプリは、デバイスをロックしてデバイスをオフにします。私はLineage OSのソースコードを閲覧しましたが、正しく理解すればPowerManager.goToSleep()と思われました。Lineage OSで動作するPowerManager.goToSleep()をアプリケーションで使用する方法は?

リネージュOSを実行しているデバイスで個人的に使用するために、画面をオフにするアプリを作成したいと考えています。在庫のROMではなく、Lineage OSなので、私はルートアクセスを取得するか、何かを点滅させるなど、もっと多くのことを行うことができます。

しかし、this questionによると、その方法はサードパーティのアプリケーションにはアクセスできません。私は単純なプロジェクトを作成し、そのメソッドを呼び出しましたが、プロジェクトをビルドしようとすると、「エラー:シンボルメソッドgoToSleep(int)が見つかりません」というエラーが発生しました。

Android Studioと公式SDKを使用してそのメソッドを呼び出すアプリケーションを作成できますか?そうでない場合は、そのメソッドを呼び出すアプリをどのように構築できますか?要求されたよう

コードを追加しました:

public class MainActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
     pm.goToSleep(100); 
    } 
} 

マニフェスト:

<manifest package="com.example.turnofftest" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
    .... 
    <uses-permission android:name="android.permissions.DEVICE_POWER" /> 
</manifest> 

を "先験的" は語った質問を読んだ後、私は、プラットフォームの証明書を使用してアプリケーションに署名する必要が知っていた、そのIリネージュOSはオープンソースなので、おそらく可能です。しかし、まず、私はそれを構築する必要があります。

+0

コードを投稿してください – ApriOri

+0

私はソースコードを追加しました。上記以外の部分は、Android Studioの「空のアクティビティ」プロジェクトによって生成されました。 –

答えて

0

あなたのアプリにはそのような権限があることを確認する必要があります。 Linage OS ROMなので、PowerManager APIにアクセスできるシステムアプリとしてアプリを簡単に組み込むことができます。

あなたが言及した質問には、必要なアクセス許可に関するコメントが含まれています。

PowerManager.goToSleep()hereの必要なアクセス許可に関する特定の質問があります。

+0

権限を追加するとコンパイルエラーが消えてしまうとは思いません。ランタイムエラーによりアクセス権が不足していませんか?私はこの方法がSDKから何とか隠されているかもしれないと思います。 –

+0

getSystemServiceを使用してPowerManagerを取得するはずです。キャストPowerManager mgr =(PowerManager)context.getSystemService(Context.POWER_SERVICE); – ApriOri

関連する問題