Allow phone to vibrate when screen turns off

前端 未结 2 662
别那么骄傲
别那么骄傲 2021-01-25 09:08

I am looking for a way to allow my program to make the phone vibrate after the screen has turned off from timing out. I have done lots of research, and have not found something

相关标签:
2条回答
  • 2021-01-25 09:31

    For me the solution was to use directly vibrate without patterns, so I don't have to use PowerManager to wake lock.

    0 讨论(0)
  • 2021-01-25 09:46
     @Override
    
        public void onCreate() {
    
            super.onCreate();
    
            // REGISTER RECEIVER THAT HANDLES SCREEN ON AND SCREEN OFF LOGIC
    
            IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    
            filter.addAction(Intent.ACTION_SCREEN_OFF);
    
            BroadcastReceiver mReceiver = new ScreenReceiver();
    
            registerReceiver(mReceiver, filter);
    
        }
    
    
    
        @Override
    
        public void onStart(Intent intent, int startId) {
    
            boolean screenOn = intent.getBooleanExtra("screen_state", false);
    
            if (!screenOn) {
    
                // Get instance of Vibrator from current Context
                Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
               // This example will cause the phone to vibrate "SOS" in Morse Code
               // In Morse Code, "s" = "dot-dot-dot", "o" = "dash-dash-dash"
               // There are pauses to separate dots/dashes, letters, and words
               // The following numbers represent millisecond lengths
                int dot = 200;      // Length of a Morse Code "dot" in milliseconds
               int dash = 500;     // Length of a Morse Code "dash" in milliseconds
                int short_gap = 200;    // Length of Gap Between dots/dashes
               int medium_gap = 500;   // Length of Gap Between Letters
               int long_gap = 1000;    // Length of Gap Between Words
                long[] pattern = {
                 0,  // Start immediately
                 dot, short_gap, dot, short_gap, dot,    // s
                 medium_gap,
                 dash, short_gap, dash, short_gap, dash, // o
                medium_gap,
                dot, short_gap, dot, short_gap, dot,    // s
               long_gap
               };
    
               // Only perform this pattern one time (-1 means "do not repeat")
              v.vibrate(pattern, -1);
    
    
            } else {
    
                // YOUR CODE
    
            }
    
        }
    

    note u must Add the uses-permission line to your Manifest.xml file, outside of the block.

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

    note : you must also test this code on a real phone , emulator can't viberate

    0 讨论(0)
提交回复
热议问题