首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抖动设备启动应用程序

抖动设备启动应用程序
EN

Stack Overflow用户
提问于 2014-03-11 08:01:22
回答 4查看 4K关注 0票数 6

我使用this与Shake一起工作,这对我来说很好,但是我想在用户摇晃设备时启动应用程序,请参见下面的代码:

代码语言:javascript
复制
 @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    transcript=(TextView)findViewById(R.id.transcript);
    scroll=(ScrollView)findViewById(R.id.scroll);

    shaker=new Shaker(this, 1.25d, 500, this);
  }

  @Override
  public void onDestroy() {
    super.onDestroy();

    shaker.close();
  }

  public void shakingStarted() {
    Log.d("ShakerDemo", "Shaking started!");
    transcript.setText(transcript.getText().toString()+"Shaking started\n");
    scroll.fullScroll(View.FOCUS_DOWN);
  }

  public void shakingStopped() {
    Log.d("ShakerDemo", "Shaking stopped!");
    transcript.setText(transcript.getText().toString()+"Shaking stopped\n");
    scroll.fullScroll(View.FOCUS_DOWN);
  }

下面是我的问题,,我如何通过摇晃我的设备来启动应用程序?

EN

回答 4

Stack Overflow用户

发布于 2014-03-21 20:22:29

您应该编写Android服务,以便在抖动期间启动您的活动。这就是全部。即使活动不可见,服务也在后台运行。

服务可以开始。在设备启动的时候。这可以使用BroadCastReceiver来实现。

宣言:

代码语言:javascript
复制
<application ...>
    <activity android:name=".ActivityThatShouldBeLaunchedAfterShake" />
    <service android:name=".ShakeService" />
    <receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
    </receiver>
</application>

BootReceiver:

代码语言:javascript
复制
public class BootReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        Intent intent = new Intent(context, ShakeService.class);
        context.startService(intent);
    }
}

服务:

代码语言:javascript
复制
public class ShakeService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    ... somewhere
    if(shaked) {
        Intent intent = new Intent(getApplicationContext(), ActivityThatShouldBeLaunchedAfterShake.class)
            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-03-15 09:05:01

Shake detection编写一个单独的应用程序。在检测到抖动时,使用app的包名启动一个意图,您想要启动:

代码语言:javascript
复制
Intent intent = new Intent (<PackageNameOfAppToBeLaunched>);     
startActivity (intent);
票数 2
EN

Stack Overflow用户

发布于 2014-03-20 18:12:33

那么,您需要的是两个不同的活动,其中第一个检测到您的摇动,需要一直运行在后台,而不是调用新的实际应用程序,你想要运行的摇。

您可以运行您的后台活动,您必须使用类,这将使您的活动在后台运行很长时间(连续),您可以使用类,如FutureTaskExecutor (您不能使用AsyncTask )。

每当线程在Shake之后将命令传递给您的应用程序,后台进程就会停止,并且命令转到app,这意味着您需要在实际的应用程序关闭后再次立即启动后台进程。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22319601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档