This post is history of registering Android App to Google Play.

I hope that this post is useful to developers who has a plan to register App to Google Play.



I registered one free App. to Google Play and after some time - about a-week-after? - I received below E-mail from Google.




This is a notification that your application, Youtube Music Player, with package ID free.yhc.youtube.musicplayer, has been removed from the Google Play Store.


REASON FOR REMOVAL: Violation of the intellectual property and impersonation or deceptive behavior provisions of the Content Policy.

All violations are tracked. Serious or repeated violations of any nature will result in the termination of your developer account, and investigation and possible termination of related Google accounts.

If your developer account is still in good standing, you may revise and upload a policy compliant version of your application as a new package name. Before uploading any new applications, please review the Developer Distribution Agreement and Content Policy.

If you feel we have made this determination in error, you can visit the Google Play Help Center article for additional information regarding this removal.

The Google Play Team




Issued application is the one below


YoutubeMusicPlayer-v1.3.0-2.apk


Main feature of this application is "making playlist of youtube videos and play those continuously without video (only audio) in background.


Actually at that moment, I didn't have any idea regarding what are problems.

So, some E-mails are additionally sent/received

Here is E-mail thread between Google and me.




Hi Google

I received below mail.

Could you describe details about the violations of application free.yhc.youtube.musicplayer.

Actually, I do not know what are issued points.

My developer account is yhcting77@gmail.com.

Thank you in advance and sorry for inconvenience.

YH Cho.




Hi Ting,

Thank you for your note.

We appreciate the opportunity to review your appeal regarding the removal
of your app from Google Play. After an investigation, we affirm our
initial decision and will not be reinstating your application at this
time.

If your developer account is still in good standing, and the nature of
your application allows for you to upload a new, compliant version of this
application to Google Play; please apply the following Content Policy
guidelines to future releases:

Google Play Android Developer Program Policy
(see "Impersonation or Deceptive Behavior"):
http://play.google.com/about/developer-content-policy.html

Regards,
The Google Play Team




Hi Google.


I'm sorry for continuously bothering you.
I reviewed "Google Play Android Developer Program Policy".
In my opinion at this moment, my violation is - concretely -  "Youtube-TM-like-application-icon and App name are used, and this may lead users to misunderstand this App. has some relation with Google.".
Am I right?
As my previous e-mail, please let me know What are issued points and problems concretely and that will be very helpful for me to update application to obey Google's policy.
I really would like to go with Google's Policy but to do it, at first I should know "What is real problem".

Thank you in advance and I'm sorry again for bothering you.
Regards.
YH Cho.




Hi Ting,

Thank you for your note. Your application's icon and title could be
misleading to some users and lead them to think that your app is
authorized by another organization. Please be aware of the "Impersonation
or Deceptive Behavior" section of the Content Policy as you publish your
applications:
http://www.android.com/us/developer-content-policy.html#impersonation



Regards,
The Google Play Team



As described as above E-mail thread, at this moment, I think app name and app icon is mainly issued points of policy violation.

So, I will register App with fix of known issued point - app icon and name.

But, I am not sure that icon and name are really all issued cases.

If there are any other issues I will update those here to leave history and data to help understanding regarding Google Play Policy.

Now, app is re-registered to Google Play. Here



Developer cannot guess when Java GC is run. So, in Android, Bitmap class has special interface 'recycle' to reuse memory as soon as possible when Bitmap is not used anymore.

Based on similar reason, we need to recycle ImageView.


But, here are some points to consider when recycling memory of ImageView.

* ImageView has drawable - most case it is instance of BitmapDrawable - regardless of it's input-resource-type - ex setImageResource(),  setImageURI() or setImageBitmap(). And, ImageView has BitmapDrawable not only the case of setImageBitmap but also some other cases - ex setImageResource.



* Sample code to recycle Bitmap of ImageView is something like below


        // true == (v instanceof ImageView)

        Drawable d = v.getDrawable();

        if (d instanceof BitmapDrawable) { // to make sure.

            BitmapDrawable bmd = (BitmapDrawable)drawable;

            Bitmap bitmap = bmd.getBitmap();

            bitmap.recycle();

        }


* setImageDrawable(), setImageResource() and setImageURI() compares new-input and current used one.

So, if new one is same with current one, ImageView doesn't do anything. (See ImageView.java for details.)


* ImageView doesn't provide any interface to compare that given one is same with current one or not.


Because of above 4 reasons, recycling memory of ImageView is not straight-forward.

Simplest way, in my opinion, is feed newly-created-Bitmap-instance to ImageView whenever changing drawable, and recycle old one.

Because drawable is newly-created-instance, we don't need to compare new one with old one.

So, blind recycling old one, is ok in this case.


Here is sample function.


    public static void

    setThumbnailImageView(ImageView v, byte[] imgdata) {

        Bitmap thumbnailBm;

        if (null != imgdata && imgdata.length > 0)

            thumbnailBm = BitmapFactory.decodeByteArray(imgdata, 0, imgdata.length);

        else

            thumbnailBm = BitmapFactory.decodeResource(Utils.getAppContext().getResources(),

                                                       R.drawable.ic_unknown_image);


        // Recycle old Bitmap

        Drawable drawable = v.getDrawable();

        if (drawable instanceof BitmapDrawable) { // to make sure.

            BitmapDrawable bmd = (BitmapDrawable)drawable;

            Bitmap bitmap = bmd.getBitmap();

            bitmap.recycle();

        }


        // change to new one.

        v.setImageBitmap(thumbnailBm);

    }

‎"유투브에서 동영상을 다운로드하는 앱들이 인터넷을 찾아보면 널렸는데 왜 마켓에는 없을까..."라는 의문에서... "구글이 자기들 이익을 위해서 그렇게 했다..." 라고 생각했었는데... 오늘 다시 한 번 곱씹어 보니 다른 결론을 내렸다.

유투브의 동영상의 소유권은 구글에 있지 않고, 업로더에 있다고 알고 있다.
그리고 유투브는 소유권자의 동의를 얻어 그 동영상을 스트리밍 서비스 하는 것이고...

그런데, 원칙적으로 "소유권이 없는 컨텐츠를 다운로드해서 보관하고 있는 것 자체는 불법이다."라는 관점에서 보면... 유투브는 업로더에서 스트리밍 서비스에 관한 동의만을 얻은 것이기 때문에, 구글이 다운로드하는 수단을 어떠한 방법으로든 제공한다면, 업로도(소유권자)와의 계약(? - 이걸 계약이라고 말한다면...)관계에서 문제의 소지가 있을 것 같다.


따라서, 마켓에서 유투브 동영상을 다운로드 가능하게 하는 앱을 서비스 한다면, 그 자체가 소위 "수단"을 제공하는 것이라고 해석될 수도 있지 않을까? 이런 문제 때문에 구글이 마켓에서 유투브 다운로드 프로그램을 없애 버리는게 아닐까?

구글이 자신들의 이익때문에 그러는게 아니라, 컨텐츠 소유권자의 권익 보호를 위해서 그러는거다... 라는 긍정적인 방향에서도 볼 수 있겠다....

한편, T-store에 Tubemate(유투브 다운로드 앱)가 버젓이 올라와 있는 건 SKT는 유투브와 전혀 관계없기 때문에 '수단'을 제공할 때 생길 수 있는 어떠한 제약도 없기 때문이 아닐까?


뭐 나름 주저리 주저리 이런 결론도 가능하다.. 라고 생각했다는...ㅋㅋ - 물론 아무런 근거도 없는 나 혼자만의 생각... ^^



+ Recent posts