I recently ran this code and worked great. This can be achieved using a broadcast receiver. You must complete a separate CustomTimer task that extends TimerTask:
Activity mActivity=null; public MyCustomTimer(Activity mActivity) { this.mActivity=mActivity; } @Override public void run() { this.mActivity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(mActivity, "Write you code here",Toast.LENGTH_LONG).show(); Log.d("MyCustomTimer","Call"); } }); }
After that, you need to implement BroadCast Receive in this class, where you want to implement the "vib ()" method .: Say, in my case (for example, for example) there is MainActivity:
public class MainActivity extends Activity { private MyCustomTimer myCustomTimer = null; BroadcastReceiver mBr_Start = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("START_VIBRATION")) { System.out.println("onreceive :START_VIBRATION"); vib(); } } }; BroadcastReceiver mBr_Stop = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("STOP_VIBRATION")) { stopVibration(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter mIntentFilter = new IntentFilter(); mIntentFilter.addAction("START_VIBRATION"); registerReceiver(mBr_Start, mIntentFilter); IntentFilter mIntentFilter2 = new IntentFilter(); mIntentFilter2.addAction("STOP_VIBRATION"); registerReceiver(mBr_Stop, mIntentFilter2); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this, MySecondActivity.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) {
Now you can start or stop the vibration by following these lines: To start the vibration:
Intent i=new Intent("START_VIBRATION"); mActivity.sendBroadcast(i);
Stop:
Intent i=new Intent("STOP_VIBRATION"); mActivity.sendBroadcast(i);
Note: onDestroy () MainActivity (in your case, when you use a broadcast receiver, unregister BroadcastReceiver.)
source share