Coder Social home page Coder Social logo

pmanot / battery Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 1.0 19 KB

A lightweight multi-platform framework for accessing battery info

License: MIT License

Swift 100.00%
battery battery-monitor swift battery-information battery-level battery-info battery-percentage combine-framework reactive-programming state

battery's Introduction

Battery

A lightweight multi-platform framework for accessing battery info

Features

  • Get battery percentage, charging state, low power mode state
  • Observe battery changes through published properties
  • Multi-platform support

Installation

You can add the Battery framework to your project via Swift Package Manager. Simply go to File > Swift Packages > Add Package Dependency and enter the following URL: https://github.com/pmanot/Battery.

Usage

To use Battery, first, import the module:

import Battery

Then, create an instance of the Battery class:

let battery = Battery()
var cancellables: [AnyCancellable] = []

battery.$percentage.sink { percentage in
    print("Battery percentage: \(percentage)")
}
.store(in: &cancellables)

battery.$state.sink { state in
    print("Battery state: \(state)")
}
.store(in: &cancellables)

battery.$isLowPowerModeEnabled.sink { isEnabled in
    print("Low power mode enabled: \(isEnabled)")
}
.store(in: &cancellables)

API

Battery

The main class of the framework. Provides the following properties:

  • percentage: The battery percentage as an integer (0-100)
  • state: The current state of the battery (BatteryState)
  • isLowPowerModeEnabled: A boolean indicating whether low power mode is enabled or not

BatteryState

An enum representing the state of the battery. It has the following cases:

  • charging: The battery is currently charging
  • discharging: The battery is discharging
  • chargedAndPlugged: The battery is fully charged and plugged in
  • unknown: The battery state is unknown

PowerSource

An enum representing the power source. It has the following cases:

  • powerAdapter: The battery is connected to a power adapter
  • battery: The battery is running on its own power
  • unknown: The power source is unknown

License

Battery is available under the MIT license. See the LICENSE file for more info.

battery's People

Contributors

pmanot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

tugcanonbas

battery's Issues

How to use this to monitor changes?

I made a basic implementation but it does not trigger for updates. Am I overlooking something?

struct ContentView: View {

let battery = Battery()

@State var percentage: String = ""

@State var state: String = ""

var body: some View {
    VStack {
        
        Text("\(percentage)")
            .font(.largeTitle)
        Text(state)
    }
    .padding()
    .onAppear {
        setupBatteryNotifications()
    }
}

func setupBatteryNotifications() {
    battery.$percentage.sink { percentage in
        print("Battery percentage: \(percentage)")
        self.percentage = self.percentage + "-\(percentage)-"
    }

    battery.$state.sink { state in
        print("Battery state: \(state)")
        self.state = state.rawValue
    }

    battery.$isLowPowerModeEnabled.sink { isEnabled in
        print("Low power mode enabled: \(isEnabled)")
    }
}

}`

Thanks for this

Been wanting to make an app with the battery as a main feature and this package will make it a lot easier to get started!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.