gpt4 book ai didi

服务中的 Android MediaProjectionManager

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:07 27 4
gpt4 key购买 nike

我想构建一个必须在服务中使用 MediaProjectionManager 的应用程序。但我无法解决它,因为“startActivityForResult”不能在服务类中使用。

最佳答案

我真的很想通过服务来做这件事,这就是我发现这个问题的方式。这是我最接近的答案,所以把它扔在那里,直到出现更好的答案。这是一种从几乎类似于从服务中执行此操作的 Activity 中执行此操作的方法:

import static your.package.YourClass.mediaProjectionManager;

public class MainActivity extends Activity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(null);
mediaProjectionManager = (MediaProjectionManager)getContext().getSystemService(MEDIA_PROJECTION_SERVICE);
startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), 1);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
this.finish();
}
}
}

然后在您的服务中需要权限时调用

private void openMainActivity() {
Intent mainIntent = new Intent(getContext(), MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(mainIntent);
}

使 Activity 在您的 AndroidManifest.xml 中不可见

    <activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoDisplay"
android:excludeFromRecents="true"
android:screenOrientation="portrait">
</activity>

注意事项:

在短时间内,您正在截屏的应用程序将失去焦点。

你的应用程序将在短时间内成为前台应用程序,所以不要被你自己的鞋带绊倒

关于服务中的 Android MediaProjectionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com