Git Product home page Git Product logo

goiv's Introduction

GoIV, Android Project for Pokémon GO.

Current Release Downloads Travis Build Status License

Table of Contents

Introduction

GoIV is one of the simplest & fastest IV calculators that does not eavesdrop on game servers. Here's a video of approximately how it looks. (The UI might change some between versions.)

Screenshots

Overlays an IV Button (with IV preview) Scans for Pokémon Info Shows Result Popup Advanced Information in Results Popup

FAQ

Is there an iOS version?

No, and iOS doesn't have several of the APIs required to work on iOS as it does on android (App overlays, Screen API).

Why does GoIV fail to identify my Pokémon / give me an error?

The most common reason for the dot to be misaligned is when the user levels up their trainer level, and doesn't increase it in the GoIV app. You can check your GoIV set trainer level in the persistent notification.

Why doesn't the IV button appear?

The most common reasons are:

  • Screen changing apps / features such as screen tinting and dynamic brightness level makes GoIV fail at recognizing the pokemon screen.
  • The phone you're running has a faulty screen capture api (Seems to occasionally affect Cyanogen and some lesser known phone brands)
  • GoIV has not been granted permission to draw over other apps.
  • GoIV wasn't started / is running in screenshot mode.

How do I export my pokemon to PokeBattler?

Scan the pokemon by pressing the iv-button in the lower left corner. Press "check iv", press the "Moveset" tab, scroll down, and export.

Does GoIV break Niantic's terms of use? Can I get banned?

Our goal is to create an app that's compliant with the terms of use, by only using information already available to the player, and only performing calculations the player could do by hand. That said, technically Niantics terms allows them to ban anyone for any reason. To our knowledge, no GoIV user has ever been banned for using GoIV.

Why does GoIV require X permission?

  • Storage - To store the OCR module. (OCR - Optical character recognition, the thing that converts images of text to text.)
  • Screen Capture - To identify when to add the overlay, and to scan for Pokémon information.
  • Internet (Online version only): To send crash reports and automatically grab new releases.

What are IVs? Do they matter?

Individual Values or 'IVs' are stats that determine how much extra power a Pokémon has in addition to the baseline (0% IV). IVs consists of Attack (affects damage of moves), Defense (affects amount of damage received) and Stamina (affects the amount of HP). IVs are calculated using Pokémon level, CP and HP, using these information we are able to calculate the possible IVs for the Pokémon. IVs are fixed and do not change when powering up or evolving, and multiple power up may help in getting. The higher the IVs, the more Combat Points (CP) the Pokémon will have, compared to another Pokémon of the same species & level. For example, the base stats of a pokemon could be 100 attack, 100 defence, and 100 stamina. That would mean that all pokemon of that species has at least 100 in each stat, but with added bonuses, could have up to 115 of all stats. A perfect IV species would therefor have 115 attack, 115 defence, and 115 stamina.

Community

Have feedback/questions/comments? Post questions in the subreddit or visit our Discord channel!

Special Thanks

GoIV would not have been possible without the help and support of the following people:

Contributing

Want to contribute to the development of GoIV? Click here to learn how.

goiv's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goiv's Issues

Nidoran♂ not properly detected

Hi,

Great app! This is going to save me so much time :).

At first I thought the calculator didn't properly get my stats, but it turns out it doesn't detect the male symbol of Nidoran♂.

image

Here you can see that it incorrectly auto-selects Nidoran♀ instead of Nidoran♂.

My device is a Galaxy S7.

On a side note, is there somewhere information on how GoIV calculates the IV and stats? I was wondering how it determines the min/max for each IV Att/Def/Sta and how it determines the possible combinations?

Option to skip refine

Hi,

Since GoIV generally detects my Pokemon correctly it might be nice to have an option available that skips the check whether the stats are correct. I'd rather have it immediately pop up with the possible IV's and just show the CP/HP/Pokemon it detected with a button to go back to refine if it's incorrect, rather than first having to tap the Check IV button each time.

Feature request: trainerlevel cap cp range / max cp range / evolution range / powerup cost

I suggest adding the cp ranges at trainerlevel cap, at max level cap and additionally the corresponding ranges after possible evolutions to the results window. Additionally I suggest calculating the powerup cost up to trainerlevel cap and max cap.

Assuming the set trainerlevel is 25 and the identified pokemon is level 21 it would look something like this:

IVs of your lvl 21 [...] can be:
[...]
[...]
[...]
Min: [%] Avg: [%] Max: [%]

CP at lvl 26.5: [...] - [...]
Cost: [...] stardust [...] candy

CP at lvl 40.0: [...] - [...]
Cost: [...] stardust [...] candy

Can be evolved into [...].
CP at lvl 21.0: [...] - [...]
CP at lvl 26.5: [...] - [...]
CP at lvl 40.0: [...] - [...]

Can be further evolved into [...].
CP at lvl 21.0: [...] - [...]
CP at lvl 26.5: [...] - [...]
CP at lvl 40.0: [...] - [...]

Pokemon image stat scan does not find correct CP value

Here is a screenshot of the scan vs actual:
tmp_3017-screenshot_20160816-1744091711190943

Here is the raw view for debugging purposes:
tmp_3017-screenshot_20160816-1745142039435894

Things to consider:

  • The first two digits of the actual CP are the last two of the scanned issue
  • The bubbles in the background may interfere, but this is on no basis

Google Nexus 5, arc is not aligning automatically.

Not aligning automatically:
https://s3.postimg.org/4qbqy8sqr/Screenshot_20160818_162652.png
https://s4.postimg.org/lgvv86sp9/Screenshot_20160818_162705.png

No manual line up:
https://s3.postimg.org/nqtzurn43/image.png
https://s3.postimg.org/72bydz4mr/image.png

1080*1920
Android 6.0.1
Screen brightness adjusting is disabled
Battery saver is off
Player level is correct
Tried to make full factory reset with clean install - no results

On earlier GoIV builds (don't remember, which, maybe 1.2.1) arc worked correctly (that version was with old align icon). But in one day it stopped working.

I noticed that low CP pokemons autodetect good. If arc is above half, detecting fails, almost always.

add opt-out for crashlytics

There should be an opt-out opportunity for users regarding crashlytics. Like a checkbox 'use anonymous data for crash analysis' on the start screen with a link to crashlytic's privacy policy below.

Keyboard over info layout

When tapping to edit the cp or hp, the keypad pops over the info layout, and the info layout doesn't move, making it seem weird.
Maybe it could use a smaller keypad or/and move the infolayout up.
I am trying to do it, but I'm no expert and I can't find the keypad call or anything

Always get - No possibilities, please check your stats again!

I always get this message when I try to calculate IV's. Stepping through the code, it appears that in the getIVText() method, the if (hp == pokemonHP) is never true. The hp is always > than pokemonHP. Is there something I'm doing incorrectly or are the calculation off? I've probably tried about 100 pokemon and I've never got anything other than no possibilities.

IV button not appearing

I've got meizu m2
and of course, i activate "Allow Pop Up app"
but, the Iv button not appearing
s60816-200145 1

Allow user to manually toggle iv button

Instead of having the screen analysed all the time to determine if the user is looking at a pokemon, let the user manually toggle the IV button overlay.

Why? Saves battery by not having the screen continuously analysed, and might help users who cant get the auto detection feature to work.

2.1 Crash, 2.0 Disappear, 1.3 fine

So I tried out the 2.1 and the app kept crashing or disappearing on my OnePlus one. on 2.0 the IV button kept disappearing (but never crashed). I never had these problems with version 1.30

Slightly tweak battery saver mode

Instead of making the user take a screenshot when he/she is on the pokemon screen, maybe we could just add a button on the screen or in the notification that takes the screenshot on press ? Then save the screenshot in a known location, and scan it.
The functions for this are already present, so it should be a minimal change.

Not working on Android 6.0.1 with 720x1080 screen

Can anyone please confirm whether this app is working on either Android 6.0.1 or a device with a 720x1080 screen? I get no IV button at all on my Samsung Galaxy Note 2 runnning CyanogenMod 13.0 (Android 6.0.1). I tried it with at least 20 different pokemon. Screenshot mode doesn't work either. The GoIV notification never changes after starting either. I know some coding, so if there's anything else I can do to diagnose this or if anyone can point me to the exact file/function where the OCR might be failing, it will be much appreciated.
chariz

Parse Error

Encounter this error when trying to open APK
There is a Problem Parsing the Package

Translation, Gym helper

Gym-Helper

What is it?

Have you ever been near a gym and wanted to know which pokémon you should take to your fight? The gym-helper will show you useful information about your opponent's pokémon so you can decide more easily.

Todo-List

  • Put bitmap code into a seperate class
  • Recognize that you are on a gym-screen
  • Get the pokémon's name
  • Create button, overlay
  • Extend the pokémon class to save all the data

Resources for data

If you know other useful resources, please let me know.

Original message

I am currently working on putting all strings into the strings.xml. Done

What do you think about showing a list of pokémon that are good against the pokémon in the gym on the gym screen? I'm going to try to implement it once I have extracted all the string.

Pause or Stop screen analyze from notification

With button in notification we would be able to pause the scan or even stop the scan of our screen directly from the notification without having to switch back to the app. Maybe this is useless if the app evolves to something only scanning on demand and not always like it is for now.

Support Android 4.4

Could you support Android version 4.4. I would like to use this great app.

Allow configuration of what is copied to clipboard

I like to just add the average of the stats after the name, so it would be nice to be able to configure this to happen instead of the range being copied.

Some other potential formats that people may want to copy are:
The three stats concatinated with colons between them
ex. 01:15:09
The three stats just concatinated but defaulting to two numbers
ex. 011509

setArcPointer not understandable

I'm trying to rewrite the code to make it easier to understand but I'm having problems understanding it myself.

https://github.com/farkam135/GoIV/blob/master/app/src/main/java/com/kamron/pogoiv/pokefly.java#L226

(45+ 180) * Math.PI / 180.0 = 3.92699081699
But the real value is 0,785398, so Math.toRadians(45) * Math.PI would be a nicer code, but then again the variable is called angleInRadians

Also, there is a lot of duplicated code.

PS: can someone help me understand it ?

clean github repo

you might want to remove the excluded files from .gitignore
You can use these commands:

git rm -r --cached .
git add .
git commit -am "Remove ignored files"

Staryu loops

Staryu seem to bug out the app, the toast with the string "scanning" is shown, but then nothing happens afterwards and another pokemon cannot be scanned untill you have restarted GoIV, i only had 5 staryus to check with but with 3 attempts on each i'm 15/15 with this loop.

IV button pressed wrong ends up in crash/hang.

If you press the IV button when you moved/scrolled just even a bit the pokemon screen you want to check out, it kinda hangs, and disappears for following use. If you go back to the app and press stop, it crashes.

[Request] Guide for getting a build environment ready

I know Java very well, but my experience with Android is much lower....it would be helpful if there were some sort of guide for getting the environment setup.

For instance, do you use Eclipse or Android Studio? Which tools/add-ons (if any) are required. I would love to start contributing to the project where I can, but I need to have some sort of idea on how to get a build environment setup.

Thanks in advance!

No possible IV found for valid stats

For reference, I am level 28, and it was set accordingly.

The pokemon seems to scan correctly from this screenshot:
tmp_3017-screenshot_20160816-174341726553371

After scanning, I get this result:
tmp_3017-screenshot_20160816-174351700325996

Here is a raw view of the pokemon before scanning:
tmp_3017-screenshot_20160816-174548809711147

Add auto updater

Hi! It's really simple to make auto update for your application with github. If you want, you can assign this issue to me and I will make appropriate pull request.

Feature request: refine / narrow down option

A refine option for narrowing down the possible iv combinations is needed to be independent from any web calculators.

I don't know what the best idea would be to implement this. As of now I simply thought of local storage with past calculations and adding a third button 'refine' under 'cancel' and 'check iv'. When clicking the 'refine' button a dropdown list of past calculations for that specific species appears and the apropriate one can be chosen crosschecking the results after. This method would lay the foundation of another possible feature in the future - an iv database of your pokemon within the app. May be a stupid solution :-D

Inefficient math for arc estimation

https://github.com/farkam135/GoIV/blob/master/app/src/main/java/com/kamron/pogoiv/MainActivity.java#L415

This code in here is repeated for every scan attempt. Floating point operations are expensive in terms of power. All the calculation in the entire loop can be computed one time at app start or when the level changes and cached for subsequent calls.

You just need an x[2 * estimatedPokemonLevel] array and a y[2 * estimatedPokemonLevel] array. And then the loop that tries to determine the arc position just needs to loop over it.

I'd work on this, but looks like a lot of people are working on this and things are moving fast. So, if anyone else wants to fix this, go for it. Otherwise, I'll get to it eventually.

Add a way to copy stats to clipboard

Copy to clipboard would be great. For example, pressing and holding the possible combinations list creates some kind of compact string (len <= 12) of the stats and copies it to the clipboard.

A configurable format for the string or multiple community provided presets would be fantastic. Something like "[truncated_pokename] [min_percent]-[max_percent]%", "[truncated_pokename] [avg_percent]", "[avg_percent] [min_A] [min_D] [min_S]" and so on.

Cheers!

[Request] See potential CP without powering up

Right now, it shows what the CP would ble if you powered your current mon all the way to the maximum.

I would like to see what the pokemon would likely be evolved without powering up, not after. Perhaps this could be one of the options?

Doesn't allow saving screenshots in battery saver mode when not checking for IV

Based on code review, this code would make the app just delete any screenshot taken while it's running. That's one good way to avoid bug reports I guess 😜

Also, people might forget that GoIV is running and would be pissed if the screenshot of the Pokemon Go or any other app for that matter gets deleted.

I think the file should be deleted only if check IV is pressed. If they hit cancel, it should leave it as is.

Tweak to the helper text 'can be evolved into ...'

It seems like it would be more useful to show the CP of the evolved version at it's current level, instead of (or in addition to) the CP at it's max level.

I think the question 'if I evolved this, how strong would it be?' would be a much more common than 'if I evolved this and then upgraded it to my max level, how strong it would be?'

Especially since you can evolve it, and then check it again to check it's max CP.

Narrow down pokemon identification with candy

An idea I've discussed a few times on reddit, is to narrow down the possibilities of what pokemon the user is looking at by watching candy names.

By doing this, you can narrow down the pokemon-picker to a single evolution line.

Example: A user has renamed a weedle to "snores", and the app erroneously recognizes it as a snorlax. If the app instead read that the pokemon wants to eat "weedle candy", then the options of possible pokemon are instead weedle, kakuna and beedrill. The app could then instead pick whichever of those 3 alternatives are closest to "snores", and when the user then corrects the input with the dropdown menu, the menu should only contain the 3 possible options, instead of all 151 in alphabetical order.

What would need to be done? My suggestions:
The application would need to ocr the candy name. If we in the Pokemon object allow another field which stores the "next evolution", some logic could solve the rest.

For example
pokemon.add(new Pokemon("pokemon name", "evolution name", 110, 76, 50));

So an algorithm that figures out an evolution chain could simply check the candy name, for example bulbasaur, and then see if that pokemon has a non-null evolution name.

Compile?

How does one compile from source? Or is that download link updated with each commit?

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.