Tag: iOS


27

Oct 2015

Who’s using HelloChinese?

My friend and former co-worker from ChinesePod, Vera, is working at a new app-focused startup in Beijing. The app is called HelloChinese, and it is heavily inspired by Duolingo. The first Chinese learning app to do its own version of Duolingo for Chinese was ChineseSkill, and now that app has got competition. (Meanwhile, Duolingo is taking its sweet time coming out with a Chinese course.)

I’m preparing to start re-examining all the best apps out there for learning Chinese and do an update to my 2011 post on apps for Chinese study. I’d also like to do a post directly comparing HelloChinese and ChineseSkill, but I thought I’d ask my readers what they thought first. Also, if you’re willing to share your own experience with the two apps as input for the upcoming blog post, please do get in touch!

If you haven’t heard of or tried the HelloChinese app yet, obviously it’s not too late. It’s free, and available for both iOS and Android.

HelloChinese app for learning Chinese


16

Jul 2013

A More Complete iOS Solution to the China GPS Offset Problem

This is a guest post by a friend, [unnamed for now]. It goes quite in-depth into China’s GPS issue, which I’ve complained about here before. The hope is that, armed with the following information, non-Chinese developers will be able to get around the issue more quickly and more effectively. Note that while the information below was applied to iOS app development, it isn’t strictly iOS-specific.


Description of the Problem

One problem that often comes up when people stay in China for an extended period of time is that they find their GPS devices don’t work. Sure your iPhone or Android phone will report your own location just fine, but try using a route tracking feature when you’re jogging or if you use an app showing other people’s GPS locations like Find My Friends, you’ll likely see they’re standing in a river or some place 500 meters away even if they’re standing right next to you.

This is the mysterious China GPS offset problem. This has been covered in a few posts [in Chinese] here, here, and here. Basically the Chinese government strictly controls mapping data within China. It’s illegal to map or create GPS traces within China without authorization. There have been stories of a few foreigners who created hiking trails near sensitive buildings w/ GPS devices being arrested due to relevant local laws.

For popular map apps such as Google Maps or Apple Maps on iOS, the user’s own location will be correct. This is because licensed companies that register with the government will be given the corrected algorithm to adjust the user’s position. Google Maps, Bing and others allow you to search for a location based on the GPS coordinates, but no local Chinese map providers such as Baidu Maps allow you to.

If you had taken a photo near the Forbidden City, load the photo into iPhoto or Picasa and look at where it is on the map you’ll see the location is just a bit off, 300-500 meters and typically about a block or two away. Not far enough to be extremely inaccurate but incorrect enough to annoy and not place you in the proper position.

Baidu Maps offset example

Fig 1. Example of proper position at Xujiahui and the offset location to the northwest

Two GPS standards

The most common GPS standard used internationally is based on a coordinate system called WGS-84. The globe is an imperfect sphere and any mapping from 3D to 2D introduces some compromises. People who get really into it will note that as you get further away from the equator, the way GPS coordinates for latitude and longitude change aren’t the same even if you’re traveling the same distance. However this is the GPS we’ve come to know and is used globally.

China uses a standard called GCJ-02 which is based off an older Soviet system of coordinates introduced in the 1940’s. It’s converting from WGS-84 to GCJ-02 that we’d like to accomplish. Chinese programmers refer to this coordinate system as the 火星坐标系统 or “Mars coordinate system” (as in you’re mapping from Earth with WGS-84 to Mars in GCJ-02).

Preliminary tries to correct the problem

Static offset

The first tries in the English-language world to correct for this China offset problem noticed that in local areas like within the city of Shanghai or Beijing, the difference was relatively fixed. That is, if you just subtract a few degrees from the latitude and add a few for longitude, you can correct the position. They quickly realized that the translation was non-linear, though, changing from city to city.

Collecting data points

Approaching this problem myself, I found out that as long as I was within China’s IP range, I would see the iOS simulator report my simulated location correctly, but if I dropped a pin on the same GPS coordinates it would be off. I created a simple app that let you drag the pin back to your real location and after scraping Wikipedia’s list of cities in China, had 657 data points.

Data_points

Fig 2. 657 points taken from list of official cities in China from Wikipedia

Using Excel’s LINEST function you can split the data up into groups and actually get a pretty decent correction that works across the whole country although it will still be off by a few meters. Enough to put you across the street from where you really were or down a few stores.

google data

Fig 3. Example of Google data point set with offsets

It turns out if you search in Chinese, several people sell massive data sets of tens of thousands of points within China with their corresponding offset. Apparently people have run into this need before. On Taobao you can find sets from 400 RMB to 900 RMB.

datasets for sale 3

Fig 4. Example of data set for sale on Taobao

Hints at already solved code

A few English language posts stated that Chinese Android coders had already released the proper algorithm in open source. After several searches in Chinese, finding relevant posts was easy. But the actual ones that solve the problem took more hunting until I found the personal website of Rover Tang and a post on a popular tech site called XCoder.cn.

Solution found and explained

Keeping it brief, the originally released code was a C file that took into account all sorts of height, GPS time and date etc. even though they were unused. This could be found several places online. A refactored and cleaner version of the code is available in C# on EvilTransform.cs.

It’s basically a complicated transform using equations describing an ellipsoid (what the Earth is) from one system of coordinates to another. Once you throw in GPS in WGS-84 you get the same ones back in GCJ-02.

You’ll note that the code interprets that anything within China needs this conversion, anything outside of China, doesn’t. And that China is defined as anything between Latitude 0.83 to 56 and Longitude 72 to 138. I think there’s a few countries caught in that rectangle that might object.

So what now?

So now any web or mobile app developers who need to record GPS paths, post GPS locations, or anything else on top of a map can now have the proper locations. It was a huge relief to me to finally find a solution that works anywhere in China so we can all go back to creating apps that work.


References


Dec. 23, 2014 Update:

A developer recently found this post vey useful in solving his own China location app problems, but needed some additional information to properly implement the above advice. I’m sharing that extra information below in the hope that it’s useful to more developers:

  1. Apple returns their coordinates in the WGS format and offsets the map when rendering (I thought the coordinates themselves were offset, not the rendered map).

    Not mentioned but deduced from the above was that Google does it the other way around… if I’m not mistaken, Google returns the GCJ coordinates for a China location (even if you are not in China)… This explains why Apple’s coordinates are off when input into Google until they are converted into GCJ.

  2. MapKit only offsets the map from devices within China.

    Because we were testing on devices in and out of China we weren’t sure where the root problem was; we had tried the conversion, but then tested the results with MapKit on a device that was outside of China.


25

Jan 2013

Quick Review of PinYin Pal

OK, so I feel a little dirty typing out “PinYin,” but that is the name of the app. (Words can be capitalized in pinyin, but syllables within words should not be capitalized or spaced out.) I guess that’s my main linguistic complaint about PinYin Pal for iPad; it seems to confuse syllables with words. Still, it’s a pretty decent “Words with Friends” clone (read: Scrabble clone), and the incorporation of characters is done in a smart way. The relative short length of pinyin syllables (as opposed to English words) is also cleverly skirted with a purple extension tile.

Some screenshots of me playing an AllSet Learning teacher:

PinYin Pal for iPad

Right from the get-go you can see that we had a little bit of trouble coming up with long pinyin syllables.

PinYin Pal for iPad

Then we started to successfully create longer syllables.

PinYin Pal for iPad

Finally, we were forced to figure out how to use the purple “spacer” block. (It turns into a blank orange square when you place it. You can see it near the top under “jun.” Blank tiles make you choose a letter, and then the letter appears on the tile, but with no points.)

It’s true that native Chinese speakers don’t have a huge advantage when playing this game, since you’re creating syllables rather than words. (In fact, you can’t string syllables together and create actual words, which is a little frustrating.) So in order to play, the learner just has to know what syllables are possible in Mandarin (and I hope you have the iPad Pinyin app for that), and be able to match the syllables you created to one correct character and definition. Tones are added when you choose your character, but you’re not tested on them.

Overall, the game felt less fun than Scrabble. I think it’s mainly because there are so few syllable finals in Mandarin (you can’t end a syllable in m, p, g, z, y, etc.), and this can slow the game down a bit. Still, it was fun playing this classic game in Mandarin, and the app is free! It was also fun playing such a well-known English-language game with a Chinese person who had had absolutely no exposure to Scrabble (or “Words with Friends”). So if you’re learning Chinese, check it out: PinYin Pal.


25

Sep 2012

iOS6 has your iPhone speaking Chinese

I got a great tip from my friend Will Stevenson yesterday. Apparently iOS6 not only added text-to-speech support for new languages, but also enabled the ability to recognize and read out Chinese, even when the phone is in English language mode, and even when the text is a mix of Chinese and English.

What it is

Here’s an example of “Speak” enabled for a Chinese spam text:

IMG_0660

Here’s an example of “Speak” for a note which includes both English and Chinese (I’m not sure why there’s a choice of reading in either 中文 or English; either one does the same thing):

IMG_0658

Untitled

For text messages, iOS treats each SMS text as one big block of text, and it won’t highlight individual words as it reads them (even though it reads them all). For other types of text, though, in apps like the Notes app, it will highlight each character as it reads it out:

IMG_0659

grassroots

[Side note: here’s what the note was about. I took notice of it because it’s a fairly rare example of mixing simplified and traditional Chinese characters in print. It was done to put the (heart) back into the character for love, since the simplified version quite literally takes the “heart” () out of (traditional) “love” ().]

How to enable it

Anyway, since you’re likely here to get your iOS6 device speaking Chinese, here’s how you do it.

First, go to Settings > General > Accessibility (Accessibility is near the bottom of all the stuff in “General.” Just a little hard to find. Naturally.)

Right at the top, you’ll see an Accessibility section called “Vision.” There you’ll see an item called “Speak Selection.” Touch on that. On the next screen, turn it ON. You can also turn no “Highlight Words” here too (why not?). You probably don’t want to mess with the speaking rate. It gets way too fast pretty quickly.

IMG_0653

IMG_0654

Here’s the really cool thing, though. There’s a “Dialects” section. (And no, I’m not going into the “what is a dialect, really? discussion here!) In there, you can not only choose the dialect for English and other languages, but also for Chinese! At the bottom of the “Dialects” section, under 中文, you can choose mainland Mandarin (中国), Cantonese (廣東話), and Taiwanese Mandarin (台灣). Not sure why they chose two regions and a language/dialect/topolect as the choices. But anyway, fun stuff!

IMG_0656

IMG_0657

What it means

Why does this matter? Well, my friend Will discovered it by accident as he was going through the somewhat tedious routine of copying a text so that he could then paste it into Pleco‘s pasteboard reader. He tried playing the text, and much to his surprise, he could hear the Chinese (whereas in the past, on iOS5, the text-to-speech converter would just skip over all Chinese). In this particular example, after having the Chinese read to him, he didn’t need to look it up after all.

Because a lot of the challenge of Chinese is simply recognizing the characters for the words you already know, text-to-speech can be extremely convenient. Will’s reaction was, “now that I have this feature, I’m going to be using Pleco a lot less now!”

Interesting. Let me know if you think this new feature changes how you learn Chinese on your phone, or if it’s just no big deal to you.


12

Jun 2012

Skritter for iPhone: finally!

The hard-working guys at Skritter have been working on an iPhone app for quite a while. They put up a nice launch page, made a really cool video, and then… proceeded to “keep us in suspense” for a really long time. Well, the wait is finally over! Even though I’ve been helping to test the new app prior to the official release, I waited until I got word from Skritter that the app has been officially approved before writing this review. The app is real!

Skritter iPhone app: Launch Page

I’ve mentioned before that I feel the iPad has real potential for Chinese writing practice. I’ve always liked Skritter, but when Skritter first came out, I had already put in my writing time (the old-fashioned way), and I wasn’t really interested in using a mouse or a writing tablet to practice characters. It did strike me as a cool way for a new generation of learners to write, however.

With an iPad, though, it’s different. The iPhone is a little small, in my opinion, when my writing utensils are as big and fat as my fingers. That’s why I’m more excited about Skritter on an iPad than on an iPhone, and I actually tested the app exclusively on my iPad rather than my iPhone. (To be clear, Skritter has only released an iPhone version so far, so I was just running an iPhone app at 2X on my iPad.)

How is it? Although I’m not crazy about every aspect of the design, the app got one thing very right: writing is very smooth. And for this app, writing is the right thing to get right. (I’m pretty sure that makes sense.) They could have invested more into slick iOS interface design, but they chose instead to make the actual writing functionality of the app work really well. Good call.

I’ve only got screenshots here, but the “virtual ink” feels very liquid as you write, like it’s really seeping out of your fingertips. When you hold your finger down and make slower strokes, you can see the extra ink “flowing” out and sinking into the “paper.” I like it.

Here are a few screenshots of me fluidly writing my name (and then the ink fading). Meanwhile the Skritter robot wants none of my narcissistic tomfoolery, and reminds me in blue what I’m supposed to be writing.

Skritter iPhone app: Fluid Writing Skritter iPhone app: Fluid Writing

Here’s me writing the character . (And no, the Skritter robot doesn’t like strokes to be that connected, but hey, it made a cool screenshot.)

Skritter iPhone app: Writing 安 Skritter iPhone app: Writing 安

Here’s some crazy unacceptable strokes just straight-up exploding, and then a screen for tone recall:

Skritter iPhone app: Explosion Skritter iPhone app: Tone Practice

Here’s some word lists and a settings screen:

Skritter iPhone app: Word Lists Skritter iPhone app: Settings

Finally–and this is a feature that kind of took me by surprise, because I’m a Skritter fan but not a regular user, so I was unaware of this feature before I discovered it–here’s a shot of Skritter’s Pleco integration. When you’re writing a word, you can click on the “info” button on top right, and then click on the Pleco button. That opens up Pleco, with the word already looked up. Pretty sweet! And there’s a button at the bottom of the Pleco screen which can take you right back to Skritter when you’re done.

Skritter iPhone app: Info Skritter iPhone app: Pleco Support

Bottom line: very cool app. Yes, the free app requires a Skritter subscription to support it, so it’s not the cheapest option for writing practice. (But if you’re such a cheapskate, what are you doing with an iPhone, anyway?)

You can get the app here.


P.S. It wasn’t until after I had written this review that I bothered to ask Nick of Skritter why the styles in the video and in the app I tested were so different, so only then did I learn that you can change the theme of the app. I gotta say, I like the “Dark Theme” much better. The default theme is a bit of a “Peking Opera Mask” turnoff for me. I’m all for a modern China with modern Chinese.

Here’s the difference between the two:

Skritter: Dark Theme Skritter: Traditional Theme

Skritter: Dark Theme Skritter iPhone app: Writing 安

Apparently a lot of people prefer the traditional “inky” style to the modern “flashy” style. Interesting.


P.P.S. If you’re interested in learning Chinese, though, make sure you’ve learned your pinyin first. AllSet Pinyin for the iPad can help with that.