Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
more like dICK
Feb 15, 2010

This is inevitable.
What's the general pattern for an android app that needs a long running socket? I'd use HTTP, but the app needs to respond to arbitrary events from the server while the user is interacting with it. This looks like something that should be done with a service, but I haven't used those in the past.

Adbot
ADBOT LOVES YOU

Harvey Mantaco
Mar 6, 2007

Someone please help me find my keys =(
I posted this in the games thread but I think that's the wrong thread for this question, sorry for the repost to anyone browsing both.

-

A question about referencing files.

I'm using Cocos2d-X (Primarily working in XCode C++ and compiling in Eclipse for Android devices as well) and I've set up different groups of images to use on different resolutions.

iOS and code works fine (you just go push_back("target file name") and it knows to look in the resources folder under your project for the required resolution - works dandy), but I'm not used to eclipse and I'm doing something wrong here.

code:

    if (platform == kTargetAndroid){
            //Android phones and tablets >= 1920 by 1080 [16:9 aspect ratio, target ratio]
            if (screenSize.height >= 1920)
            {
                resourceSize = CCSizeMake(1920, 1080);
                searchPaths.push_back("Resources/resources_andhd");
                cocos2d::CCLog("-->Loading and HD graphics");
            }
            //Remaining Android phones and tablets (default 1280 by 720)
            else if (screenSize.height >= 1280 && screenSize.height < 1920)
            {
                resourceSize = CCSizeMake(1280, 720);
                searchPaths.push_back("Resources/resources_andsd");
                cocos2d::CCLog("-->Loading and SD graphics");
            }
            //In the odd case we are supporting an old phone so just shrink smallest existing
            else
            {
                resourceSize = CCSizeMake(960, 640);
                designSize = CCSizeMake(960, 640);
                searchPaths.push_back("/Resources/resources_iphonehd");
                cocos2d::CCLog("-->Loading placeholder iPhone HD graphics for and device");
            }
    }
    else if (platform == kTargetIphone)
    {
	//blah
It's getting to the push_back code properly but I'm getting the error:
code:
06-20 04:56:29.129: D/cocos2d-x debug info(4606): Get data from file(ui_Background.png) failed!
06-20 04:56:29.140: A/libc(4606): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4619 (Thread-159)
In my project I have the images saved under a Resource folder so my project looks like
code:
->ProjectName
  ->Src
  ->Bin
  ->etc...
  ->Resources
    ->resources_andhd
      ->ui_Background.png
      ->blahblah.png
    ->resources_andsd
      ->ui_Background.png
      ->blahblah.png
I'm tried referencing those situational resource files using Resource/resources_xxxxx, /Resource/resources_xxxxx, resources_xxxxx... I'm tried putting them into the assets folder and referencing them that way. I've tried referencing them using the absolute path from root. It's something that should be so simple but I'm stuck on it.

JerseyMonkey
Jul 1, 2007

Here is a pretty neat app to mess with content providers.
https://play.google.com/store/apps/details?id=com.jensdriller.contentproviderhelper

Doctor w-rw-rw-
Jun 24, 2008

more like dICK posted:

What's the general pattern for an android app that needs a long running socket? I'd use HTTP, but the app needs to respond to arbitrary events from the server while the user is interacting with it. This looks like something that should be done with a service, but I haven't used those in the past.

SPDY with server push and Square's Okhttp library?

more like dICK
Feb 15, 2010

This is inevitable.
That may work. I think I'm approaching it in the wrong way from the beginning though, since I have no experience with architecting a multiplayer thing.

Basically the game is split into rounds. Most rounds are simple: a problem is presented to each player, they have 30 seconds to solve it on their own and submit their answer, and you inform each player who won at the end of the round and assign points etc.

The problem is that there is one round where players can "buzz in", and solve the problem before anyone else. A player needs to be notified that his opponent has buzzed in. I guess this can be accomplished more easily by having each player poll the server to see if they can still buzz in. I just need to figure out a good frequency for the polling, or another solution entirely.

IAmKale
Jun 7, 2007

やらないか

Fun Shoe
Can you guys help me figure out what to do?

I've got a DialogFragment with a ListView that displays all user-created tags. I want to set it up to enable the user to edit tag labels while also allowing them to long-click a row to bring up the Contextual Action Bar. The CAB will allow the user to delete multiple tags at once as per the Android Design docs.

I can't long-press any of the rows in the ListView because the EditText and ImageButton are covering the View. I tried setting up the ImageButton's OnLongClickListener to do a view.performLongClick(), but that hasn't produced the desired result. I'm stuck finding that nice mix between "editable space" and "clickable space". Any ideas?

QuarkJets
Sep 8, 2008

It seems like every ListView that I see in nice apps supports long-click drag and drop, but this doesn't seem to be natively supported? How do I make a ListView where you can drag and drop elements in the list?

tj9991
Jun 1, 2005
Skript Kiddie
Has anyone else experienced this issue? I changed some minor part of my app, and when it came time to build the APK suddenly ProGuard shits a brick and prints 200 errors. As far as I know no files related to ProGuard were modified since I last built an APK. Initially I was using Android Studio but I wanted to see if it would work in Eclipse, and it did not. Even using a default ProGuard config returns the exact same errors.

Thom Yorke raps
Nov 2, 2004


Karthe posted:

Can you guys help me figure out what to do?

I've got a DialogFragment with a ListView that displays all user-created tags. I want to set it up to enable the user to edit tag labels while also allowing them to long-click a row to bring up the Contextual Action Bar. The CAB will allow the user to delete multiple tags at once as per the Android Design docs.

I can't long-press any of the rows in the ListView because the EditText and ImageButton are covering the View. I tried setting up the ImageButton's OnLongClickListener to do a view.performLongClick(), but that hasn't produced the desired result. I'm stuck finding that nice mix between "editable space" and "clickable space". Any ideas?


If I long click an edit text I expect to get the "Paste" pop up, not multi select. Maybe support a long click on the delete buttons and make them toggleable?

IAmKale
Jun 7, 2007

やらないか

Fun Shoe

Ranma posted:

If I long click an edit text I expect to get the "Paste" pop up, not multi select. Maybe support a long click on the delete buttons and make them toggleable?
I figured out something a bit more elegant:

Default display

Tap to edit (it toggles visibility between a TextView and an EditText)

Long-press to delete

QuarkJets
Sep 8, 2008

There you go, that looks great!

IAmKale
Jun 7, 2007

やらないか

Fun Shoe
Is there a way to detect when a SQLiteOpenHelper-extended class calls onUpgrade? I want to visually notify the user when a database upgrade is in progress, but I can't figure out how to get that class to speak to the outside world. It just seems to do its thing without any communication back to the main Activity that, hey, work is being done on the database and you probably shouldn't let the user do anything until the upgrade is complete.

zeekner
Jul 14, 2007

Karthe posted:

Is there a way to detect when a SQLiteOpenHelper-extended class calls onUpgrade? I want to visually notify the user when a database upgrade is in progress, but I can't figure out how to get that class to speak to the outside world. It just seems to do its thing without any communication back to the main Activity that, hey, work is being done on the database and you probably shouldn't let the user do anything until the upgrade is complete.

Where are you constructing the SQL helper? You could pass in a Messenger instance created by your activity and use that to send messages back. The exact implementation details depend on the location and relationship of your SQL helper. If it's located in a content provider it's a little harder, you might have to put that Messenger in the application context and then pass messages to the final destination via some kind of registration/message passing setup.

Messengers are really useful for this kind of thing, and the messages are thread-safe (as in they execute on whatever thread the destination handler was created on). You just create a Handler and override handleMessage(), then pass that handler into the Messenger constructor. Pass that messenger reference anywhere, any time you want to send a message, just call Message.obtain() with the message details (you can include a bundle too). Messengers can even be attached to Messages themselves (useful as a reply destination).

e: Oh, also, BroadcastReceivers are useful, probably way better for this case too. You can create your own receiver and register it in the activity at runtime and send broadcasts to it from anywhere you can get a Context. Just use the context passed into the constructor of the SQL helper.

zeekner fucked around with this message at 19:11 on Jun 26, 2013

IAmKale
Jun 7, 2007

やらないか

Fun Shoe

Salvador Dalvik posted:

e: Oh, also, BroadcastReceivers are useful, probably way better for this case too. You can create your own receiver and register it in the activity at runtime and send broadcasts to it from anywhere you can get a Context. Just use the context passed into the constructor of the SQL helper.
Hell yeah, this was the missing piece of the puzzle! With them I finally able to figure out a way to helpfully block user interaction (via a dialogfragment) while database operations (or anything else long-running for that matter) occur on a separate thread. Thanks to you I'm almost ready for launch! :toot:

Doctor w-rw-rw-
Jun 24, 2008

Karthe posted:

Hell yeah, this was the missing piece of the puzzle! With them I finally able to figure out a way to helpfully block user interaction (via a dialogfragment) while database operations (or anything else long-running for that matter) occur on a separate thread. Thanks to you I'm almost ready for launch! :toot:

Don't forget intent services

IAmKale
Jun 7, 2007

やらないか

Fun Shoe

Doctor w-rw-rw- posted:

Don't forget intent services
What's the difference between using a Thread versus using an IntentService to do something like, say, modify database schema?

IAmKale fucked around with this message at 05:15 on Jun 27, 2013

Thom Yorke raps
Nov 2, 2004


I'm writing code to communicate with a backend over REST. Storing data, login, running business logic type stuff. I'm trying to decide how to handle async communication - I could use callbacks, but I'm worried about the anonymous inner classes keeping a reference to the Activity even after it is destroyed, and code running without a valid context. My other idea is to use a bound service as described here: http://developer.android.com/guide/components/bound-services.html
Is there anything obvious I am missing?

Doctor w-rw-rw-
Jun 24, 2008

Karthe posted:

What's the difference between using a Thread versus using an IntentService to do something like, say, modify database schema?
IntentServices only run when needed and fit in better with the android lifecycle.. They're not necessary the best solution but they are an easy one.

DreadCthulhu
Sep 17, 2008

What the fuck is up, Denny's?!
In Android, is there the ability to let users add custom repositories for one or two apps that will then become available to them and get updated automatically like Play store apps? I'm thinking along the lines of custom APT repositories.

Glimm
Jul 27, 2005

Time is only gonna pass you by

DreadCthulhu posted:

In Android, is there the ability to let users add custom repositories for one or two apps that will then become available to them and get updated automatically like Play store apps? I'm thinking along the lines of custom APT repositories.

No, but you can release beta apps to Android users that will install/update through the Play store.

https://support.google.com/googleplay/android-developer/answer/3131213?hl=en

DreadCthulhu
Sep 17, 2008

What the fuck is up, Denny's?!

Glimm posted:

No, but you can release beta apps to Android users that will install/update through the Play store.

https://support.google.com/googleplay/android-developer/answer/3131213?hl=en

Interesting, thanks for the link. What's the closest I can get to actually being able to very rapidly iterate on an app in Android? There are a couple of not very ToS-friendly ways of achieving this with hundreds of users in iOS, and I was hoping there would be a more supported route in Android.

zeekner
Jul 14, 2007

DreadCthulhu posted:

Interesting, thanks for the link. What's the closest I can get to actually being able to very rapidly iterate on an app in Android? There are a couple of not very ToS-friendly ways of achieving this with hundreds of users in iOS, and I was hoping there would be a more supported route in Android.

What are you trying to do? Anything pushed to the market is available within an hour or two. One of the few things the Android market does better than the rest is turnaround time.

Glimm
Jul 27, 2005

Time is only gonna pass you by

DreadCthulhu posted:

Interesting, thanks for the link. What's the closest I can get to actually being able to very rapidly iterate on an app in Android? There are a couple of not very ToS-friendly ways of achieving this with hundreds of users in iOS, and I was hoping there would be a more supported route in Android.

You can just send apks directly if you want. Host it yourself and tell your users when it is ready. Or do the beta thing which in my experience takes about an hour to get to testers.

kitten smoothie
Dec 29, 2001

TestFlight is also an option, given they added Android support.

IAmKale
Jun 7, 2007

やらないか

Fun Shoe
I'm trying to extract a SQLite database from a ZIP file deployed via an expansion APK. I'm trying to copy it to the app's private databases folder.

Java code:
ZipResourceFile mainExpansion = null;
InputStream zipDB = null;

try
{
	mainExpansion = APKExpansionSupport.getAPKExpansionZipFile(ActivityDownloader.this, 7, 0);
	zipDB = mainExpansion.getInputStream(ActivityStartScreen.DB_FILE_NAME);

	// Copy the file to the app's private directory
	FileOutputStream fos = openFileOutput(DictHelper.DATABASE_NAME, Context.MODE_PRIVATE);

	byte[] buffer = new byte[1024];
	int len;
	int fileSize = 0;
	while((len = zipDB.read(buffer)) != -1)
	{
		fos.write(buffer, 0, len);
		fileSize += len;
	}
	fos.flush();
	fos.close();

	// DEBUG
	Log.i("ActivityDownloader", "Total File Size: " + fileSize/1024/1024 + "MB");
}
catch (IOException e)
{
	Log.e("ActivityDownloader", e.getMessage());
}
The database file is being uncompressed - the fileSize variable is the same as the uncompressed file on my local computer. Unfortunately, the file is nowhere to be found. I cobbled together the code based on Android docs for reading ZIP files in expansion APKs and writing files to internal storage, but nothing's erroring out for me to troubleshoot the issue further.

What's going on? Why isn't my file showing up in private storage?

EDIT: I discovered that the file is being written, to /data/data/com.example/files/. What's the easiest way to write it to /data/data/com.example/databases/ instead?
EDIT2: Figured it out, I just needed to change
Java code:
FileOutputStream fos = openFileOutput(DictHelper.DATABASE_NAME, Context.MODE_PRIVATE);
to
Java code:
FileOutputStream fos = new FileOutputStream("/data/data/com.example/databases/" + DictHelper.DATABASE_NAME);

IAmKale fucked around with this message at 15:20 on Jul 3, 2013

Harik
Sep 9, 2001

From the hard streets of Moscow
First dog to touch the stars


Plaster Town Cop

Karthe posted:


EDIT2: Figured it out, I just needed to change
Java code:
FileOutputStream fos = openFileOutput(DictHelper.DATABASE_NAME, Context.MODE_PRIVATE);
to
Java code:
FileOutputStream fos = new FileOutputStream("/data/data/com.example/databases/" + DictHelper.DATABASE_NAME);

At minimum, that's going to break if you put out a com.example.beta version for testing.

Unfortunately, there's no call to get the directory for databases, but there's a semi-hackish workaround.

Java code:
    String destPath = getFilesDir().getPath();
    destPath = destPath.substring(0, destPath.lastIndexOf("/")) + "/databases" + DictHelper.DATABASE_NAME;
    FileOutputStream fos = new FileOutputStream(destPath);
(Shamelessly stolen from SO with minor tweaks).

That should all work back to API 1, and continue to work if an idiot vendor moves the default install on you.

Fluue
Jan 2, 2008
Hey everyone,

I'm working on a little hobby project just to learn my way around Android. I have a quick question about onClickListener, though.

My app takes in user input, sends the input to a php script, then the script returns some JSON and the app parses/displays the information.

I have my app taking data/sending to server/getting data and parsing in my main activity.. is this the wrong way to be doing it if users will press a button to initiate the data transfer? Right now my button and onClickListener don't seem to do anything.

Should I be using intents instead? (not really looking to do that right now, but I will if it's the only way).

Here's my code for the onCreate method

code:
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //setup image loader
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
        ImageLoader.getInstance().init(config);

        //input vars
        final Spinner numPoke = (Spinner) findViewById(R.id.SpinnerNumPokemon);
        final Spinner dexRegion = (Spinner) findViewById(R.id.SpinnerRegion);
        final Spinner pokeType = (Spinner) findViewById(R.id.SpinnerType);
        final ToggleButton incNFE = (ToggleButton) findViewById(R.id.toggleNFE);
        final ToggleButton incLegendary = (ToggleButton) findViewById(R.id.toggleLegendary);
        Button generateGo = (Button)findViewById(R.id.buttonGo);

        generateGo.setOnClickListener(new View.OnClickListener(){
            public void onClick(View view){
                /**
                 * Begin setting the values from out input
                 */
                String mNumPoke = numPoke.getSelectedItem().toString();
                String mDexRegion = dexRegion.getSelectedItem().toString();
                String mPokeType = pokeType.getSelectedItem().toString();
                if(incNFE.isChecked()){
                    String mNFE = "2";
                } else {
                    String mNFE = "1";
                }
                if(incLegendary.isChecked()){
                    String mLegendary = "2";
                } else {
                    String mLegendary = "1";
                }
                //end setting values from input

		//this is the async task I'm trying to call
             LoadPokemon generateThePokemon = new LoadPokemon();
                generateThePokemon.execute();
            }
        });

        //hashmap for list
        pokemonList = new ArrayList<HashMap<String, String>>();


    }

Fluue fucked around with this message at 02:57 on Jul 5, 2013

DreadCthulhu
Sep 17, 2008

What the fuck is up, Denny's?!
Actually, I need to apologize as I didn't quite explain my level of noobishness. We're right now on iOS only and it's been a giant pain to iterate with app update review cycles as long as a week, with some likelihood of being rejected for dumb reasons. I'd seriously consider dumping the platform if it allowed me to have a more web-like development lifecycle experience.

Basically I don't know anything about Android, and would love to find out just how much one can expect to wait for the submission process? I checked the OP, I swear. Does it take a week to get an update reviewed? What kind of control is in place to check the submission? Also, do you have to pay extra for distributing custom binaries to users?

As I mentioned, right now in iOS there's no way to get your poo poo updated the next day, which is a pain if you're in a situation like where we are and you sometimes can have hundreds of users you need to push the change to. We workaround by giving people a link to the binary signed in an in-house profile, which is a $300 license and you're explicitly forbidden from doing that, heh. It's kind of reasonable for us because we're more B2B than consumer (b2b apps still have to go through an approval process in iOS...), so we can directly tell our users to update by re-clicking the link.

zeekner
Jul 14, 2007

DreadCthulhu posted:

Actually, I need to apologize as I didn't quite explain my level of noobishness. We're right now on iOS only and it's been a giant pain to iterate with app update review cycles as long as a week, with some likelihood of being rejected for dumb reasons. I'd seriously consider dumping the platform if it allowed me to have a more web-like development lifecycle experience.

Basically I don't know anything about Android, and would love to find out just how much one can expect to wait for the submission process? I checked the OP, I swear. Does it take a week to get an update reviewed? What kind of control is in place to check the submission? Also, do you have to pay extra for distributing custom binaries to users?

As I mentioned, right now in iOS there's no way to get your poo poo updated the next day, which is a pain if you're in a situation like where we are and you sometimes can have hundreds of users you need to push the change to. We workaround by giving people a link to the binary signed in an in-house profile, which is a $300 license and you're explicitly forbidden from doing that, heh. It's kind of reasonable for us because we're more B2B than consumer (b2b apps still have to go through an approval process in iOS...), so we can directly tell our users to update by re-clicking the link.

There is literally no review process. Upload the apk and hit release and its available as soon as the servers catch up.

Of course, if you are creating a b2b app that you don't want to list on the market, you'll have to distribute directly. You can do this by hosting the apk yourself or going through a service like Hockeyapp. The end user will have to enable the "unknown sources" option, but android users are used to that kind of bullshit.

Glimm
Jul 27, 2005

Time is only gonna pass you by

Salvador Dalvik posted:

There is literally no review process. Upload the apk and hit release and its available as soon as the servers catch up.

Of course, if you are creating a b2b app that you don't want to list on the market, you'll have to distribute directly. You can do this by hosting the apk yourself or going through a service like Hockeyapp. The end user will have to enable the "unknown sources" option, but android users are used to that kind of bullshit.

Actually the beta feature should work perfectly for this, right? Though it's not quite what it is intended for.

Within a company that uses Google Apps for Business it's possible to do releases through Play as well, though I haven't done that.

But yeah it's dead easy just to put the apk on a web site and let users download it, even send them a push notification when an update is ready. If you do the update through Google Play it's pretty quick as well. Much simpler than doing any of that with iOS for sure.

Glimm fucked around with this message at 05:06 on Jul 6, 2013

zeekner
Jul 14, 2007

Glimm posted:

Actually the beta feature should work perfectly for this, right? Though it's not quite what it is intended for.

Within a company that uses Google Apps for Business it's possible to do releases through Play as well, though I haven't done that.

But yeah it's dead easy just to put the apk on a web site and let users download it, even send them a push notification when an update is ready. If you do the update through Google Play it's pretty quick as well. Much simpler than what you might be accustomed to with TestFlight/iOS provisioning.

Yea, I wasn't sure about suggesting using beta for that, since it's a pretty new feature and I don't think Google's clarified if they're fine with using it like that.

I didn't know Google Apps for Business integrated into Play, that sounds like the closest equivalent to Apple's enterprise app distribution system.

Glimm
Jul 27, 2005

Time is only gonna pass you by

Salvador Dalvik posted:

Yea, I wasn't sure about suggesting using beta for that, since it's a pretty new feature and I don't think Google's clarified if they're fine with using it like that.

Yeah, I haven't seen them say anything about it not being okay. I assume Google wouldn't be paying attention to things like that (it isn't like the developer is getting around some fee or anything).

DreadCthulhu
Sep 17, 2008

What the fuck is up, Denny's?!
I'm honestly puzzled about why Apple hasn't removed their medieval review process yet if Android manages to get away without it. Are there been numerous cases of people getting malicious applications on their devices because of no human supervision? Doesn't sound like it from what I hear. Even then, I don't know how much a human reviewer can help against malicious logic.

bonds0097
Oct 23, 2010

I would cry but I don't think I can spare the moisture.
Pillbug

DreadCthulhu posted:

I'm honestly puzzled about why Apple hasn't removed their medieval review process yet if Android manages to get away without it. Are there been numerous cases of people getting malicious applications on their devices because of no human supervision? Doesn't sound like it from what I hear. Even then, I don't know how much a human reviewer can help against malicious logic.

Static Code Analysis. Of course a human reviewer can help against malicious logic. There's a whole field dedicated to malware analysis.

Glimm
Jul 27, 2005

Time is only gonna pass you by

DreadCthulhu posted:

I'm honestly puzzled about why Apple hasn't removed their medieval review process yet if Android manages to get away without it. Are there been numerous cases of people getting malicious applications on their devices because of no human supervision? Doesn't sound like it from what I hear. Even then, I don't know how much a human reviewer can help against malicious logic.

Apple doesn't review just for malicious activity. They will also reject your application if it is crash prone, horribly violates the HIG (well, at least they used to - I haven't heard of rejections for this in quite awhile), or contains more adult themes than the developer claims. Sure, a lot of this could be gotten around by a savvy developer by depending on web services to change things up after a switch is flipped on the backend, but then Apple can pull the developers credentials.

Microsoft's review is for Windows 8 is even more thorough, and esoteric - I had an app get rejected because the charms bar had a button which opened the (required) privacy policy within the app, but the guidelines say the button should link to a web site containing the privacy policy. Kind of bizarre considering it is generally easier to randomly change a web site than a view within the app, but that's what Microsoft wanted.

Anyway I've certainly released apps on Android which (stupidly) crashed on various devices because I didn't test them and might have been a bit drunk (I'm a terrible developer), and Apple or Microsoft's semi-QA (they're not really QA) might have helped me there. There are definitely benefits and drawbacks to both systems. I prefer Android's but I don't see Apple (or Microsoft, or BlackBerry, or even Amazon.. well maybe Amazon) changing their ways.

kitten smoothie
Dec 29, 2001

There is a lot of crap on Google Play, stuff like this and this, and that's not even counting the continuous run of counterfeit apps (how many fake "Temple Run" apps made it to the store?). Or, apps that are stupidly buggy or just outright crash on launch. That would never fly on the App Store and this crap makes Android look bad too.

I would love to see some sort of manual curation option on Android and have some kind of way to designate curated apps, in addition to prioritizing them in the search results. You could fill the curated pool in the beginning by grandfathering in apps that have a high ratio of 4 and 5 star reviews relative to downloads, and otherwise, charge a fee to submit a new app into the curated portion of the store and get that extra designation on your app.

Glimm
Jul 27, 2005

Time is only gonna pass you by

kitten smoothie posted:

There is a lot of crap on Google Play, stuff like this

Penis Size Calculator is my favorite app :colbert:

That's an interesting idea. It would be pretty cool if applications could be updated as quickly as they are currently, but only get the curated tag after passing a human review of some sort.

IAmKale
Jun 7, 2007

やらないか

Fun Shoe
How do I handle expansion APKs when I'm ready to release an application update? If I'm upgrading an application from v1 to v2, do I need to re-upload main.1.com.example.obb as app v2's main extension APK when I upload v2? The main extension APK hasn't changed, just the application itself.

I've read Google's documentation, but it's just ambiguous enough that I'm not sure if I need to re-upload the OBB file, or if I can just upload v2 by itself and it'll magically have access to the OBB file that I uploaded when I initially uploaded v1.

Edit: I didn't know that Google would offer to assign the main extension APK to my new application binary, that was easier than I thought. :shobon:

IAmKale fucked around with this message at 19:04 on Jul 8, 2013

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

I haven't done any Android development in like 18 months or something, but my grandma(!!) has been pestering me for a bible(!!!) app with easier/faster navigation than what she can find on the Play store.

I don't know the keywords to describe the library I'm looking for, so maybe someone can point me in the right direction.

I'm wanting a vertical scrollbar that pops up a tooltip to the left or right as you drag the bar up and down describing where the view will jump to when you let go of the bar. So, for example, if she's looking in the book of Matthew, when she starts scrolling on the right of the screen, it pops a tooltip-ish thing to the left of the scrollbar showing which book she will jump to when she lets go.

The scrollbar won't necessarily be connected to the text in the view as I might have each book or chapter or something be separate.

So, anyway, are there any libraries like that?

Adbot
ADBOT LOVES YOU

Glimm
Jul 27, 2005

Time is only gonna pass you by

Thermopyle posted:

I haven't done any Android development in like 18 months or something, but my grandma(!!) has been pestering me for a bible(!!!) app with easier/faster navigation than what she can find on the Play store.

I don't know the keywords to describe the library I'm looking for, so maybe someone can point me in the right direction.

I'm wanting a vertical scrollbar that pops up a tooltip to the left or right as you drag the bar up and down describing where the view will jump to when you let go of the bar. So, for example, if she's looking in the book of Matthew, when she starts scrolling on the right of the screen, it pops a tooltip-ish thing to the left of the scrollbar showing which book she will jump to when she lets go.

The scrollbar won't necessarily be connected to the text in the view as I might have each book or chapter or something be separate.

So, anyway, are there any libraries like that?

I might just have a slide out drawer on the right side with each book in a ListView, so she could swipe it open from the right and then select the book to jump to? Not quite the behavior you're asking for though.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply