小编pez*_*pez的帖子

LocationSettingsRequest对话框启用GPS - 跳过onActivityResult()

我的应用程序的一部分需要位置服务,因此如果当前关闭位置,应用程序将提示用户启用它.下面是我正在做它:(也见于这个堆栈溢出的答案)

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
            .addLocationRequest(mLocationRequest);
builder.setAlwaysShow(true);

PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());

result.setResultCallback(new ResultCallback<LocationSettingsResult>() 
{
     @Override
     public void onResult(LocationSettingsResult result) 
     {
         final Status status = result.getStatus();
         final LocationSettingsStates = result.getLocationSettingsStates();
         switch (status.getStatusCode()) 
         {
             case LocationSettingsStatusCodes.SUCCESS:
                 // All location settings are satisfied. The client can initialize location
                 // requests here.
                 ...
                 Log.d("onResult", "SUCCESS");
                 break;
             case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                 // Location settings are not satisfied. But could be fixed by showing the user
                 // a dialog.
                 Log.d("onResult", "RESOLUTION_REQUIRED");
                 try …
Run Code Online (Sandbox Code Playgroud)

android dialog

51
推荐指数
4
解决办法
4万
查看次数

用户按下后退按钮时隐藏导航抽屉

我已经按照谷歌的官方开发教程在这里创建抽屉式导航.

目前,一切正常,除非用户使用Android在屏幕底部提供的本机后退按钮(以及主页和最近的应用程序按钮).如果用户使用此本机后退按钮导航回来,导航抽屉仍将打开.如果用户使用ActionBar导航回来,导航抽屉将像我希望的那样关闭.

我的代码几乎与官方教程完全相同,除了我如何处理用户在抽屉上选择项目:

   mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id)
        {
            switch(position)
            {
                case 0:
                {
                    Intent intent = new Intent(MainActivity.this, NextActivity.class);
                    startActivity(intent);
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

当用户使用本机后退按钮导航回来时,如何关闭导航抽屉?任何建议表示赞赏 谢谢!

navigation android navigation-drawer

23
推荐指数
3
解决办法
3万
查看次数

Stripe Checkout webhook - 监听哪个事件

背景:

我已经在 React 应用程序中实现了Stripe Checkout ,以及成功侦听事件的Webhook 。

这些是成功结帐后 Webhook 听到的事件:

checkout.session.completed
charge.succeeded
payment_method.attached
customer.created
customer.updated
invoice.created
invoice.finalized
customer.subscription.created
invoice.updated
customer.subscription.updated
invoice.paid
invoice.payment_succeeded
payment_intent.succeeded
payment_intent.created
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的事情:

客户成功创建订阅后,我需要将值保存到数据库中。此值有助于启用付费功能,因此我必须确保 Webhook 捕获所有成功的事件。


问题:

我是否可以始终仅依赖这些 Webhook 事件之一来指示成功?如果不是,哪些是最值得聆听的?

我认为对于我的用例来说最重要的事件可能是checkout.session.completedcharge.succeededpayment_intent.succeeded,但我不太确定这些事件有何不同,以及其中一些事件是否/何时可能不会出现。

文档表明

目前,Stripe 上有三种接受付款的方式:

  • 条纹结帐
  • 收费API
  • 支付意向API

  • checkout.session.completed:结账会话成功完成时发生。
  • charge.succeeded:充电成功时出现。
  • payment_intent.succeeded:当 PaymentIntent 成功完成付款时发生。

所以我的猜测是checkout.session.completed, 、charge.succeeded、 和中的每一个payment_intent.succeeded都表示成功,而这三个都返回的原因是它们对应于当前在 Stripe 上接受付款的三种方式。

如果是这种情况,我可以可靠地监听仅checkout.session.completed指示成功吗?


其他信息:

stripe listen --forward-to localhost:4242/myWebHook成功结帐会话后的输出:

( …

webhooks stripe-payments

14
推荐指数
1
解决办法
5635
查看次数

VideoView onTouch事件:暂停/恢复视频,以及显示/隐藏MediaController和ActionBar

问题摘要:

1)如何首先将视频显示为暂停,而不是立即播放?

2)如何在触摸时暂停/取消暂停视频,还隐藏/显示ActionBar和MediaController.

我很感激任何建议.谢谢!(附有相关守则)

更新1

找到问题2的某种解决方案(需要返回错误),但我仍然不知道如何回答问题1.

当用户按下我的应用程序中的按钮时,他们会观看他们的视频.当他们第一次打开那个屏幕时,我希望视频暂停而不是立即播放.我还希望能够通过点击屏幕暂停播放视频.当视频暂停时,我想要显示ActionBarMediaController.当视频恢复时,我想隐藏ActionBarMediaController(可能稍有延迟?)

我已经尝试了一些东西,但我最终的问题,如视频将暂停,但不能恢复,或ActionBarMediaController不会显示或隐藏正确.

更新2

我找到了问题1的部分解决方案,并更新了代码,以便在第一次打开时将视频显示为暂停.但是,当它第一次打开时,它只显示黑屏,直到我触摸视频视图才能播放它.观看视频一次后,它将重置为开始和暂停,等待再次播放,并将从视频的开头显示正确的图像.但我不知道如何在开始时绕过黑屏.

相关代码:

public class ViewImageVideoFragment extends Fragment
{

    private int position = 0;
    private MediaController mMediaController;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        mMediaController = new MediaController(getActivity());
        ...
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
    {

        if (savedInstanceState != null)
        {
            position = savedInstanceState.getInt("position");
        }

        View v = inflater.inflate(R.layout.fragment_video_view, parent, false);

        mVideoView = (VideoView) v.findViewById(R.id.fragmentVideoView); …
Run Code Online (Sandbox Code Playgroud)

java video android android-videoview

12
推荐指数
1
解决办法
2万
查看次数

Camera2视频录制

我已经实现了这个官方的Google Camera2示例,对我的应用进行了微小的更改,以便在自定义相机中拍照.我还需要提供视频录制选项,但我找不到一个例子 - 也许是因为Camera2API相对较新.

有没有人有关于如何修改上述代码以允许视频录制的示例/教程,或者B)在使用Camera2API 时在新片段中实现视频录制?

先感谢您!

android android-camera

7
推荐指数
1
解决办法
9972
查看次数

Python类继承:如何使用不在父类中的值初始化子类

我正在努力学习更多有关课程和OOP的知识.

如何让我的Person类初始化所有的值,Entity但也有一个可能不包含在Entity类中的值?

例如,无论是PersonSpirit继承Entity.但是,只有一个Person会有gender.我怎样才能Person初始化gender

在那之后,我仍然能够以下面的方式创建一个实例Person和调用describe()吗?

class Entity(object):

    def __init__(self, state, name, age):
        self.state = state
        self.name = name
        self.age = age

class Person(Entity):

    def describe(self):
        print "Identification: %s, %s, %s." % (self.state, self.name, self.age)

class Spirit(Entity):
    pass  # for now

steve = Person("human", "Steve", "23" # can I then list gender here?)
steve.describe()
Run Code Online (Sandbox Code Playgroud)

python inheritance class python-2.7

6
推荐指数
2
解决办法
7072
查看次数

拍照后相机未保存

我可以按一个按钮,打开原生相机应用程序,然后成功拍照.但是当我在手机上查看图库或照片原生应用时,图片不会保存在那里.我对Android很新,所以很可能我在代码中遗漏了一些重要内容.

问题:

1)这些图片在哪里保存?

2)我可以以某种方式修改以下代码以保存到内部存储,因此使用我的应用程序拍摄的所有照片都是私密的,只能通过我的应用程序访问吗?

3)如果我想将这些图片保存到一个对象,以及一些文本/其他输入,那么最好的方法是什么?我应该保存一个Uri或一些标识符以便稍后引用图像,还是保存实际BitMap图像?

非常感谢任何帮助,谢谢!

这是我拍摄照片的代码:

mImageButton.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View v)
    {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        imageUri = CameraUtils.getOutputMediaFileUri(CameraUtils.MEDIA_TYPE_IMAGE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        startActivityForResult(intent, REQUEST_IMAGE);
    }
}
Run Code Online (Sandbox Code Playgroud)

CameraUtils直接从Google开发者指南中获取的课程:

public static Uri getOutputMediaFileUri(int type)
{
    return Uri.fromFile(getOutputMediaFile(type));
}

public static File getOutputMediaFile(int type)
{
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "camera");

    if (!mediaStorageDir.exists())
    {
        if (!mediaStorageDir.mkdirs())
        {
            return null;
        }
    }

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile;
    if (type == …
Run Code Online (Sandbox Code Playgroud)

android android-camera

6
推荐指数
1
解决办法
2万
查看次数

启动本机相机应用程序,可选择捕获视频或图像

在我打开原生相机应用程序以捕获这样的图像之前,我已经编写了一个应用程序:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

或者,像这样捕获视频:

Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

但是,有没有办法打开与捕捉选项原生相机应用无论是视频或图像?我想打开下面给出的图像,用户可以在其中滑动以访问侧面菜单并更改其输入类型.

下面的图片

我试过搜索,但还没有结果.我不确定是否有办法在没有编写自定义相机实现的情况下执行此操作,我现在想避免使用.

如果可以,我该怎么办?我怎样才能识别用户在捕获完成后选择的媒体类型(onActivityResult可能)?

先感谢您!

camera android

5
推荐指数
1
解决办法
1062
查看次数

Android - 更改保证金的背景颜色

我有一个命名的片段HostFragment,它嵌套了一到四个其他片段.

这是布局HostFragment:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/hostFragmentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="12dp">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <RelativeLayout
            android:id="@+id/fragmentContainer1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <RelativeLayout
            android:id="@+id/fragmentContainer2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <RelativeLayout
            android:id="@+id/fragmentContainer3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <RelativeLayout
            android:id="@+id/fragmentContainer4"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

    </TableRow>

</TableLayout>
Run Code Online (Sandbox Code Playgroud)

其中重要的部分是android:layout_marginTop="12dp".

背景:嵌套片段覆盖HostFragment除此边距之外的整体.当嵌套片段改变其背景颜色(通过调用Canvas#drawColor)时,HostFragment还需要更改此边距的颜色以匹配.我存储了所需的颜色SharedPreferences.

行为:如果用户从去HostFragmentSettingsActivity,改变颜色,并且回来HostFragment,嵌套的片段将立即(通过他们改变自己的颜色onResume()的方法),但HostFragment"保证金将仍然是旧的颜色.如果用户然后离开HostFragment并转到另一个片段,然后返回HostFragment,则边距将更新其颜色.我不知道如何或为什么 - 我没有代码HostFragment来更新颜色.该代码HostFragment …

android android-layout xml-layout

5
推荐指数
1
解决办法
1万
查看次数

指南针 - 跟踪完整360度旋转的数量

假设一个人正在使用这个指南针,从90度开始他们开始顺时针或逆时针旋转.什么是计算完成360度旋转的最佳方法?假设它们只是顺时针旋转,或者只是从头到尾逆时针旋转.

我一直在提出解决方案,如果开始轴承是例如90度,我会在传感器数据发生变化时继续检查下一个轴承,如果它始终朝一个方向移动,我知道它们正在旋转.如果它们继续沿那个方向旋转并使其回到90度,那就算是一个旋转.我的方式似乎非常复杂和低效,我很难想出一个更好的方法.

在这种情况下,我期待多次完整旋转.

我很感激任何帮助.谢谢!

我发现了这个相关的答案,我正在尝试为此编写一个代码示例.如果某人已经做过类似的事情,请发布!

@Override
public void onSensorChanged(SensorEvent event)
{
    switch(event.sensor.getType())
    {
        case Sensor.TYPE_GRAVITY:
        {
            mValuesAccelerometer = lowPass(event.values.clone(), mValuesAccelerometer);
            break;
        }
        case Sensor.TYPE_MAGNETIC_FIELD:
        {
            mValuesMagneticField = lowPass(event.values.clone(), mValuesMagneticField);
            break;
        }
    }

    boolean success = SensorManager.getRotationMatrix(
            mMatrixR,
            mMatrixI,
            mValuesAccelerometer,
            mValuesMagneticField);

    if (success)
    {
        SensorManager.getOrientation(mMatrixR, mMatrixValues);

        float azimuth = toDegrees(mMatrixValues[0]);
        float pitch = toDegrees(mMatrixValues[1]);
        float roll = toDegrees(mMatrixValues[2]);

        if (azimuth < 0.0d)
        {
            //The bearing in degrees
            azimuth += 360.0d;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-sensors compass-geolocation

5
推荐指数
1
解决办法
685
查看次数