Trigger volume buttons to take picture UWP

前端 未结 2 1872
暖寄归人
暖寄归人 2020-12-20 05:20

I try to use a selfie stick, but as windows 10 camera app does not provide the possibility to take picture and record video with it, I was wondering if there is a possibilit

相关标签:
2条回答
  • 2020-12-20 06:00

    I was wondering if there is a possibility to trigger and handle when the user presses the volume up and/or down button inside an UWP app

    No, hardware Volume controls need special permission for development, if you are an ordinary developer, it is not possible to access these hardware controls, you can refer to Start, Back, Search, Power, and Volume control behavior.

    I try to use a selfie stick, but as windows 10 camera app does not provide the possibility to take picture and record video with it.

    I'm not sure why is selfie stick doesn't support take pictures and record, some windows phones don't have a camera hardware button, like Lumia 640. But for device like Lumia 950 which has a camera hardware button, the camera hardware button is accessible in UWP app. As you can see from the official Basic camera app sample, it registers the event handlers for hardware buttons of Camera like this:

    if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
    {
        HardwareButtons.CameraPressed += HardwareButtons_CameraPressed;
    }
    

    When use this API, you need to reference Microsoft Mobile Extension SDK for Universal App Platform in your project.

    If accessing camera hardware button is not enough for you, my suggestion is that you may submit a request to add this new features for developing through the Windows Feedback tool.

    0 讨论(0)
  • 2020-12-20 06:03

    There is a solution. When I tested what hardware button do, it fired CoreWindow_KeyDown with VirtualKey of 174(volume down) and 175(up).

    //in ctor
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
    //
    
    void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
    {
        if ((int)args.VirtualKey == 175 || (int)args.VirtualKey == 174))
        {
         //take a picture
        }
    }
    
    0 讨论(0)
提交回复
热议问题