'안드로이드'에 해당되는 글 42

  1. 2009.07.01 [G1 phone]Cupcake V1.5 업데이트
  2. 2009.06.23 안드로이드 챌린지 2
  3. 2009.01.06 [Android] Gaussian filter 와 마스크 형식 변경 6
Interesting/ANDROID | Posted by hyena0 2009. 7. 1. 00:06

[G1 phone]Cupcake V1.5 업데이트


  Cupcake V1.5 업데이트

  안드로이드 마켓에서 다운로드한 파일들을 정리하려고

  다운로드버튼을 선택하는 순간,

  업데이트 하겠냐고 물어보는 팝업창이 떴다.

  우연히 OK 선택했다가 컵케이크로 업데이트하게 되었다.

  에뮬레이터를 컵케이크로 업데이트하고 나니

  느려졌다는 느낌이 상당히 들어서 살짝 후회되기도

  했는데, 어짜피 하려고 했으니까 잘된듯도 싶다.

  아래의 모습처럼 다운로드를 받고 나서 설치를 시작한다.


  업데이트가 완료되면 안드로이드 로고가 반짝거리며 바뀌어 있다.

  그리고 상당한 시간을 소요하며 부팅이 된다.


 몇가지 바뀐 것은 브라우저가 돋보기 형태로 볼 수 있도록 바뀐 것,

  안드로이드 마켓에서 검색안되던 프로그램들이 검색된다는 것 등이 있다.

  그 외에는 좀 느려졌다는 것 외에는 차이를 느낄 수 없었다.



  

 
Interesting/ANDROID | Posted by hyena0 2009. 6. 23. 21:26

안드로이드 챌린지 2


  안드로이드 챌린지 2

  드디어 안드로이드 챌린지 2가 시작된다.

  물론 5월 27일에 공표해서 좀 늦은감은 있지만,

  세계적인 경기침체에서 상당히 고무적인 일이다.

  이번에는 좀 방식이 바뀌었는데,

  안드로이드 마켓을 이용한다는 것이다.

  안드로이드 마켓에서 순위를 매기고

  평가하는 시스템으로 운영한다.

  아래 자세한 내용과 같고, 8월에 사이트를 열고 2주뒤에 마감한다.


Cool apps that surprise and delight mobile users—built by developers like you—are a huge part of the Android vision. To support you in your efforts, Google launched the Android Developer Challenge, which will provide awards for great mobile apps built on the Android platform.

ADC 2

Welcome to the Android Developer Challenge 2! You can participate by developing an application, evaluating and scoring applications, or both. The sections below provide information about the types of applications you can enter, as well as the contest information and dates.

The ADC 2 full terms and conditions will be available soon.

Developers will submit their apps to one of 10 specially-designated ADC 2 categories (see below) beginning in August. An application can only be submitted to a single category.

First Round
In late August (final date to be announced), users of Android-powered handsets that can access the Android Market will be able to obtain a special ADC 2 judging application from the Android Market. With this app, they can download, test, and rank applications submitted to the challenge. Users choosing to participate in the review process will download submitted apps randomly and will rate them along a number of criteria, resulting in a final score for each app. The results from this first round will generate the top 20 applications in each of the 10 categories (200 apps total), which will go into the second round.

Second Round
The top 20 applications in each category will proceed to the second round. Android users will then be able to download the final applications and evaluate them in the same manner as during the First Round using the ADC 2 judging app. At the end of the voting period, applications in each category will be ranked, with the community vote constituting 45% of the final judging score.

Along with the public ranking, a team of Google-selected judges will evaluate the applications. Their scores will constitute 55% of the final score.

Eligibility

The ADC 2 contest is open only to applications that have not been published -- whether through Android market, a public web site, or any other means. An application that has already been made available to the public (at the time of judging) is ineligible, regardless whether it is free or sold commercially. Additionally, applications that were entered in the ADC 1 contest are ineligible for the ADC 2 contest, regardless whether they were winning apps. Similarly, updated versions of applications entered in the ADC 1 contest are ineligible for ADC 2.

When you enter an application in the ADC 2, we will make it available to all contest judges for free, exclusively for the purposes of judging. If you intend to sell your application after the conclusion of the contest, you may submit a "trial" version of the application for judging. We recommend that your trial version include full functionality, but with a timed expiration, rather than including limited functionality with no expiration. Judges will evaluate your application based only on the functionality accessible to them, so it makes sense to provide the fullest range of capabilities possible in your contest app.

Teams and business entities may enter applications in the contest, but each team or entity must designate a single developer entity who will be responsible for uploading the application. Should the application be selected as a contest winner, all payments will be sent to the developer entity only. Further division of funds is the responsibility of the team leader or business entity representative.

All submitted applications must run on Android 1.5 and be in English.

Categories

  • Education/Reference
  • Games: Casual/Puzzle
  • Games: Arcade/Action
  • Social Networking
  • Lifestyle
  • Productivity/Tools
  • Media
  • Entertainment
  • Travel
  • Misc

Awards

Prizes will be distributed as follows; all prizes are in USD:

For each of the 10 categories:

  • 1st prize: $100,000
  • 2nd prize: $50,000
  • 3rd prize: $25,000

Overall (across all categories)

  • 1st prize: $150,000 (meaning the overall winner will receive $250,000)
  • 2nd prize: $50,000 (meaning the 2nd prize winner will receive up to $150,000)
  • 3rd prize: $25,000 (meaning the 3rd prize winner will receive up to $125,000)

In addition, attendees of selected developer events will be provided with devices intended for use in developing submissions for ADC 2.

Timeline

Note: this timeline is subject to change until the Official Rules are published.

  • May 27 - Google I/O: ADC 2 announced
  • June: Full Terms and Conditions made available
  • Beginning in August: submission site opens, developers submit apps
  • Approximately 2 weeks later: submission site closes; ADC2 client/scoring app goes up on Market; users begin reviewing apps
  • Mid October: first-round judging ends
  • Mid November: final judging ends, winners announced


[Android] Gaussian filter 와 마스크 형식 변경

이전의 마스크 필터는 배열을 선언하면서 값을 직접 입력하는 방식이었는데, 5x5, 7x7 등의 마스크표현과 Gaussian 필터 설정을 위해서 마스크 형식을 바꾸기로 했다.

우선 마스크는 이미지 배열과 곱하는 부분이 항상 같은 위치에 있으므로 convolution 계산을 하는 커널의 위치가 같아서 계산방식을 변경하였다. 기존의 convolution 계산은 미리 커널의 크기만큼을 계산식에 넣어놓아서 고정되어 있었지만 반복적 계산을 적용하여 커널의 크기가 변경되어도 계산될 수 있도록 하였다.

마스크는 double 형식으로 해서 향후 가우시안을 적용하거나 블러링 적용시 계산이 되도록 하였고, 값이 초과될 경우 색의 기준이 변하므로 최대, 최소를 각각 255, 0 으로 고정하여 녹색 이미지로 되도록 하였다.

private int[] mask(int[] colors, int W, int H) {
       int ST;
       int orgColor=0;
       int greenColor=0;
             
       ST = W;
             
       int avrColor=0;
       int Mh, Mw;
       Mh = Mw = 5;
       //double[] masks = makeMask(Mh);//블러링 mask
       double[] masks = GaussianMask(0.8);//Gaussian Mask 적용

       double var=0;
              
       //get bitmap color
        for (int y = 0; y < H; y++) {
               for (int x = 0; x < W; x++) {
                greenColor = 0x0000FF00 & colors[y * ST + x];
                  greenColor = greenColor>>8;
                colors[y * ST + x] = greenColor;
               }
           }
        //calc. average value of colors
       for (int i=0;i<H*W;i++){
        avrColor += colors[i];
       }
       avrColor /= H*W;
       //mask the color
       //i는 계산될 높이 계산될 폭만큼의 반복범위임
       for (int i=0;i<(H-Mh)*(W-Mw);i++){
        
         //기존 mask 계산
          //var = colors[i]*masks[0]      + colors[i+1]*masks[1]      + colors[i+2]*masks[2]
          //     +colors[W+i]*masks[3]    + colors[W+i+1]*masks[4]    + colors[W+i+2]*masks[5]
          //     +colors[(W+1)+i]*masks[6]+ colors[(W+1)+i+1]*masks[7]+ colors[(W+1)+i+2]*masks[8];
          for(int m=0;m<Mh;m++){
           for(int n=0; n<Mw;n++){
            var += (double)colors[i+W*m+n]*masks[Mh*m+n];  
           }
          }
          
                    
          if(var>255)var=255;
          if(var<=0)var=0;
          
          colors[i]=(int)var;
          var = 0;//var 초기화       
       }
       
       //make argb style
          for (int y = 0; y < H; y++) {
              for (int x = 0; x < W; x++) {
               greenColor = colors[y * ST + x];
               greenColor = greenColor<<8;
               greenColor = 0x0000FF00 & greenColor;             
               colors[y * ST + x] = greenColor;
              }
          }
        return colors;
      }

마스크는 아래와 같다. 해당마스크는 블러링을 적용하기 위한 것이다.

private double[] makeMask(int maskSize) {
          int Mh, Mw;
          Mh = Mw = maskSize;
          double[] RetMask = new double[Mh*Mw];
          
          for(int m=0;m<Mh;m++){
     for(int n=0; n<Mw;n++){
      RetMask[Mh*m+n] = 1.0/(Mh*Mw);  //블러링 적용을 위한 생성값
     }
    }
          return RetMask;
          
         }
         
가우시안 마스크는 아래와 같다. 표준편차인 시그마 값에 의해 커널의 크기가 결정된다. 

         private double[] GaussianMask(double sigma) {
          int length = (int)(6*sigma)+1;
          int center = length / 2;
          
          int Mh, Mw;
          Mh = Mw = length;
          double[] RetMask = new double[Mh*Mw];
          
          for(int m=0;m<Mh;m++){
     for(int n=0; n<Mw;n++){
      RetMask[Mh*m+n] = (1.0/(2.0*Math.PI*sigma*sigma))*Math.exp(-((m-center)*(m-center)+(n-center)*(n-center)*(1.0/(2.0*sigma*sigma))));  //가우시안 함수
     }
    }
          return RetMask;
          
         }

가우시안 필터를 적용한 결과는 아래와 같다. 시그마 값은 0.8을 적용하여 5x5 마스크를 적용하였다.