Monday, August 22, 2011

Dell & Microsoft Gang Up Against Apple’s “Post PC World”

Dell & Microsoft Gang Up Against Apple’s “Post PC World”:
HardwareApple CEO Steve Jobs went on the record several years ago describing the modern day desktop as “a truck”, suitable for some, but not practical for the mass market. He went on to define the iPad as the first “post PC device”, and has trumpeted his tablet and iOS platforms as flagship products for this ideology ever since. Microsoft and its partners have listened to mainstream media run with his comments as gospel ever since, but some have finally had enough.

Hello Kitty and Miffy Plugy Headphone Jack Prorectors

Hello Kitty and Miffy Plugy Headphone Jack Prorectors:
We can find out a dozen of Plugy headphone jack protectors, but if you like the two cartoon characters: Hello Kitty and Miffy. The following two Plugy headphone jack protectors may be more suitable for you.

Hello Kitty and Miffy Plugy Headphone Jack Prorectors

Samsung releases 2nd teaser video for big announcement on September 1st (Video)

Samsung releases 2nd teaser video for big announcement on September 1st (Video):

Saturday, August 20, 2011

Firefox 7 (And Its Improved Memory Usage) Hits Beta Channel

Firefox 7 (And Its Improved Memory Usage) Hits Beta Channel:
"Leaner and meaner" are two terms you may use to describe a malnourished lion suffering through a drought, but the same phrase also applies to a cornered Firefox. Google's Chrome took a bit of the luster away from Mozilla's star browser. Rather than simply shrug their shoulders, Firefox's developers rolled up their sleeves and got hard at work on the MemShrink program, an initiative to reduce the browser's horrible memory leaks. Members of the team have reported great successes; now, with the release of Firefox 7 Beta, you can check out the memory improvements for yourself.

German State Declares Facebook Like Button Illegal

German State Declares Facebook Like Button Illegal:
likeFacebook’s pervasive web presence can be a little creepy at times, but one German state is apparently fed up with Zuckerberg’s shenanigans. Thilo Weichert, head of the Independent Centre for Privacy Protection of the German state of Schleswig-Holstein, says that the ‘Like’ button is illegal and sites based in the state must remove it or be fined up to 50,000 Euros.

USB Light-Sensitive Pacman Ghost Lamp

USB Light-Sensitive Pacman Ghost Lamp:
The Ghosts are searching their old enemy Pacman in the dark, so they have some light-sensitive gadgets. If you’re curious, let’s go on checking the USB light-sensitive Pacman ghost lamp.

USB Light-Sensitive Pacman Ghost Lamp


Friday, August 19, 2011

Don't Call It A Comeback: 7 Products That Saved Their Companies (And 2 That Didn't)

Don't Call It A Comeback: 7 Products That Saved Their Companies (And 2 That Didn't):
They say fate's a fickle mistress, but destiny's got nothing on the free market. For every Microsoft-esque success story, there's the burnt out husk of Sun Microsystems (R.I.P.). The really interesting tales have nothing to do with overwhelming successes or overwhelming failures, though; any budding novelist can tell you that a good story needs some tension.

Fantastic Super Mario Sisters

Fantastic Super Mario Sisters:

No doubt, Super Mario and Luigi are male plumbers, but in the works of Beth T, they have turned into girls. If you’re curious, let’s go on checking the fantastic ‘Super Mario Sisters’ illustrations.


Fantastic Super Mario Sisters



Beth T, a female artist living in Canada created these cute cartoon characters themed by Super Mario Bros, but apparently this would be a brand new series named Super Mario Sisters. As we can see from the illustrations, the stars are two kind female plumbers. The purpose of the two girls is to save the handsome Princess Peach and Princess Daisy from evil shrews Wario and Waluigi. Could you achieve the female artist’s dream, Nintendo? After the break, check out the rest illustrations of Super Mario Sisters.


Fantastic Super Mario Sisters
Fantastic Super Mario Sisters


Additionally, if you need other Mario themed toys and gadgets, you might like to check the remote control Mario Kart, Mario Nintendo 3DS holder and more via “Super Mario” tag.


Fantastic Super Mario Sisters


Fantastic Super Mario Sisters Source




Thursday, August 18, 2011

HTC Sensation Gets Android 2.3.4 Update On Vodafone

HTC Sensation Gets Android 2.3.4 Update On Vodafone:


HTC Sensation users are getting a nice little bump to Android 2.3.4 with an OTA maintenance update. The announcement released by HTC promises stability and performance updates, reduced heating in some scenarios by optimizing processor load and improved browser performance over its stocked Android 2.3.3.


Hit the break for the complete announcement and instructions for updating your HTC Sensation. Read More…





HTC Sensation Gets Android 2.3.4 Update On Vodafone


Windows Phone 7 App of the Week: IM+

Windows Phone 7 App of the Week: IM+:
Internet Chat is still one of the top methods of instantaneous communication between multiple parties. Chat junkies who have been using mobile devices for a while will be familiar with IM+ by Shape Services. IM+ has been one of the leaders in mobile chat software for a very long time, and the software’s success across a wide range of platforms is a good indication of the importance Shape Services places on their role in the mobile community.


IM+ for Windows Phone currently comes in two flavors, a free (ad supported) version and a $4.99 Pro

Wednesday, August 17, 2011

Mozilla Firefox

Bouncywikilogo.gif
Untuk orang-orang yang tidak memiliki rasa humor sekalipun, bangsa Wikipedia yang (sok) tahu mempunyai artikel tentang Mozilla Firefox.
Firefox Logo.png Artikel ini tampangnya lebih baik jika dilihat pakai Firefox.
"Ah jeLEk!,, Google Chrome seratus kali lebih Hot!"         ~ Kamu kepada Mozilla Firefox

Mozilla Firefox adalah seorang mahou shoujo terkenal dari abad ke-21, dilihat oleh banyak orang Eropa sebagai jawaban dari Barat atas "Sailor Moon Project" milik Jepang. Dia adalah keturunan langsung dari Mozilla Plasmalizard yang legendaris, dan anak sulung dari Netscape Navigator dan Mozilla Suite. Mozilla itu nama keluarga, tetapi ditulis di awal, seperti yang dilakukan kebanyakan masyarakat Ainu.

Firefox dan Thunderbird
Berkas:Aaaaa.jpg Tujuan Firefox adalah untuk merebut kembali artifak penting yang hilang dari manusia seratus generasi yang lalu di Perang Browser: Interweb, web besar tertanam di permukaan dan atmosfer planet bumi. Musuhnya adalah organisasi AOL, organisasi jahat yang mempunyai tujuan untuk mengeksploitasi Googolkromium, sumber energi langka yang dapat digunakan untuk mengaktifkan Interweb. Musuh lainnya adalah Interweb Exploder, monster raksasa yang berulang kali mencoba untuk meledakkan interweb; walaupun sering gagal, dan membuat orang-orang yang menghubungkan komputer mereka ke interweb menjadi zombi.
Sebagai seorang superhero sejati, Firefox memiliki seorang sidekick: adiknya, Mozilla Thunderbird. Thunderbird bekerja sebagai agen surat Firefox, membaca surat yang meminta dia untuk membantu, serta mengantarkan surat Firefox untuk fanboy-nya ke kantor pos terdekat. Meskipun Firefox jarang membalas surat dari para fanboy, karena ia terlalu sibuk menyelamatkan dunia. 

Biografi

Mozilla Phoenix atau dikenal juga sebagai Firebird adalah seorang siswi SMU biasa hingga suatu hari, sebuah peristiwa besar mengubah hidupnya; Seekor monster rubah raksasa datang ke Hiddenleaves, desa tempatnya tinggal. Monster itu mengamuk, menghancurkan desa, ngutang di warung terdekat, dan membunuh ibunya, Mozilla Suite.
Ayah Phoenix, Netscape, berusaha untuk menangkap mahluk itu, namun selalu gagal karena ia jago sekali main petak umpet. Akhirnya, setelah satu malam yang melelahkan, mahluk itu berhasil dipancingnya dengan majalah bokep edisi terbaru. Netscape, murid ninja dari sannin terkenal Gunung Gecko, menyegel mahluk itu ke dalam tubuh Phoenix dengan fuinjutsu. Phoenix pun diberi kekuatan sebagai Jinchuuriki dari monster tersebut, dengan ekor dan telinga rubah mencuat dari tubuhnya. Ia pun mengubah namanya menjadi Firefox, dan dipercaya sebagai seorang superhero yang akan menyelamatkan dunia.

Hentai in the web. Jangan takut, ini hanya bagian dari fan service kami.
Adik perempuan Firefox, Mozilla Minotaur, setelah iri dengan kekuatan kakaknya pun pergi ke Tokyo untuk belajar ilmu sihir dan mencari kerja sambilan sebagai pengantar surat. Setelah mendapat ilmu titisan Nyai Nanoha Shakti, pendiri organisasi Project Lightning, Minotaur pun berubah menjadi seorang mahou shoujo dengan kekuatan burung thunderbird (seperti yang biasa terjadi di anime, bukan?). Ia pun mengubah namanya menjadi Mozilla Thunderbird, dan kembali ke Hiddenleaves untuk membantu kakaknya.
Sementara itu, tanpa diketahui oleh Firefox dan Thunderbird, ibu mereka Suite telah dibangkitkan dengan Kuchiyose: Edo Tensei, dengan nama baru SeaMonkey oleh ayah mereka sendiri yang telah berubah menjadi jahat setelah ditangkap oleh AOL, organisasi jahat yang ingin menguasai kekuatan Interweb.




source : http://tolololpedia.wikia.com/wiki/Mozilla_Firefox

Penyadap Ada di Mana - Mana

Berhati - hatilah para pengguna handphone, data anda bisa disadap dan dicuri dengan mudahnya...




Google Chrome

"Oops! Google Chrome tidak dapat menemukan http://tolololpedia.wikia.com!"

       ~ Google Chrome kepada Tolololpedia
Bouncywikilogo.gif
Untuk orang-orang yang tidak memiliki rasa humor sekalipun, bangsa Wikipedia yang (sok) tahu mempunyai artikel tentang Google Chrome.
Chrome Logo.svgArtikel ini tampangnya lebih baik jika dilihat pakai Google Chrome.
Google Chrome (G-Cr) adalah sebuah isotop langka dari mineral kromium, ditemukan oleh duo Sergey Brin dan Larry Page pada tahun 1998. Google Chrome kemudian dibuat sebagai bahan dasar dari Google Chrome, sebuah penjelajah web. Hiraukan saja jika nama keduanya sama. Mereka membuat Google Chrome (browser) dengan menyuntikkan kode seperti C + + dan kedalam Google Chrome (substansi) dan membentuknya untuk sistem operasi Windows.

Google Chrome (browser) kemudian menjadi browser internet paling cepat pada saat ini, karena Google Chrome (subtansi kimia) diketahui dapat membawa data dalam kecepatan 1100 mph. Anda tertarik untuk mendapatkannya? Cara termudah untuk mendapatkan Google Chrome (browser) tentu saja, dengan men-download-nya di internet. Pastikan jika yang anda kunjungi adalah w, bukannya w. Setelah anda mendownloadnya, akan muncul sebuah file dengan gambar dari Google Chrome (substansi) dengan nomor hotline Google tertera di bawahnya. Anda tinggal menelpon ke nomor tersebut, lalu call center akan mencatat nama, alamat, dan nomor celana dalam anda. Setelah itu, anda akan dikirimi sebuah chip kromium, yang harus anda tancapkan ke dalam komputer dengan palu. Setelah proses ini selesai, chip kromium tadi akan mencair dan mengeras pada kabel dalam, menciptakan sebuah program dalam komputer yang mampu mengatasi segala pengangkutan data internet, bahkan dengan jumlah yang terberat.

Google Chrome (substansi) sendiri merupakan logam tahan korosi (tahan karat) dan dapat dipoles menjadi mengkilat, bahkan lebih mengkilat dari botakmu. Dengan sifat ini, Google Chrome banyak digunakan sebagai pelapis pada ornamen-ornamen bangunan prostitusi maupun sebagai pelapis perhiasan seperti emas. Emas yang dilapisi oleh kromium ini lebih dikenal dengan sebutan emas putih. Padahal kita tahu, bahwa Google Chrome terdiri dari empat warna: merah, kuning, hijau dan biru.



source : http://tolololpedia.wikia.com/wiki/Google_Chrome

Saturday, August 13, 2011

JavaScript

document.write("JavaScript"); 

Ditemukan pertama kali dengan tidak sengaja pada zaman kerajaan Singosari oleh Hayam Wuruk yang Notebook terracota-nya tertumpah kopi oleh Ken Dedes. javascript perlu didokumenkan karena dia berbentuk skrip sebagaimana skrip2 yang lain seperti skripsi. Javascript sebenarnya merupakan Babad Tanah Jawa yang di bahasa Inggriskan. 

var strDefinisi;

strDefinisi = "JavaScript adalah bahasa rahasia yang digunakan untuk berkomunikasi oleh para pemuja Barney, seperti Jimmy Wales, Roy Suryo, dkk.";
document.write(strDefinisi);

Javascript (Babad Tanah Jawa) merupakan kode kode tidak jelas yang digunakan dalam pembuatan suatu website. walaupun itu tidak dapat dimengerti tetapi itu tentu saja ada artinya dan anda akan tau sendiri apakah itu.

Kenapa ada kata Java-nya ? 

Ya, anda benar. Sebenarnya yang pertama kali menemukan JavaScript adalah orang Jawa, didasarkan oleh mantra dan aji-aji ilmu hitam.
Hal ini dibenarkan oleh bukti yang tertulis pada naskah Hanacaraka kepunyaan wong Jowo di bab Ilmu Santet halaman sekian sekian. Lalu pada tahun sekian-sekian datanglah orang-orang VOC yang berencana untuk mengklaim naskah Hanacaraka, namun karena kegigihan bangsa Indonesia yang dibantu oleh Mak Erot, VOC mampu diporak-porandakan dan dipaksa kembali ke tanah aselinya. Namun Roy Suryo berkhianat kepada bangsa indonesia dan memberikan 68% salinan dari naskah Hanacaraka kepada bangsa Amerika yang terkenal dengan American Reversal nya.
Nah, dari 68% bocoran itulah bangsa Amerika mengembangkan JavaScript. Tadinya sih mereka mau menamakannya BuleScript, namun agar tidak melanggar lisensi GPL, maka dibubuhilah kata Java dan dihapusnya kata Bule. Hal ini juga karena mereka takut akan kejadian porak-porandanya VOC oleh Mak Erot pada tahun sekian-sekian yang waktu itu.
Sementara menurut Uncyclopedia, penemu JavaScript adalah Surya Tatamungil (Sun Microsystem).




source : http://tolololpedia.wikia.com/wiki/JavaScript

Friday, August 12, 2011

New Tools For Managing Screen Sizes

New Tools For Managing Screen Sizes: "
[This post is by Dianne Hackborn and a supporting cast of thousands; Dianne’s fingerprints can be found all over the Android Application Framework — Tim Bray]

Android 3.2 includes new tools for supporting devices with a wide range of screen sizes. One important result is better support for a new size of screen; what is typically called a “7-inch” tablet. This release also offers several new APIs to simplify developers’ work in adjusting to different screen sizes.
This a long post. We start by discussing the why and how of Android “dp” arithmetic, and the finer points of the screen-size buckets. If you know all that stuff, you can skip down to “Introducing Numeric Selectors” to read about what’s new. We also provide our recommendations for how you can do layout selection in apps targeted at Android 3.2 and higher in a way that should allow you to support the maximum number of device geometries with the minimum amount of effort.
Of course, the official write-up on Supporting Multiple Screens is also required reading for people working in this space.

Understanding Screen Densities and the “dp”

Resolution is the actual number of pixels available in the display, density is how many pixels appear within a constant area of the display, and size is the amount of physical space available for displaying your interface. These are interrelated: increase the resolution and density together, and size stays about the same. This is why the 320x480 screen on a G1 and 480x800 screen on a Droid are both the same screen size: the 480x800 screen has more pixels, but it is also higher density.
To remove the size/density calculations from the picture, the Android framework works wherever possible in terms of "dp" units, which are corrected for density. In medium-density ("mdpi") screens, which correspond to the original Android phones, physical pixels are identical to dp's; the devices’ dimensions are 320x480 in either scale. A more recent phone might have physical-pixel dimensions of 480x800 but be a high-density device. The conversion factor from hdpi to mdpi in this case is 1.5, so for a developer's purposes, the device is 320x533 in dp's.

Screen-size Buckets

Android has included support for three screen-size “buckets” since 1.6, based on these “dp” units: “normal” is currently the most popular device format (originally 320x480, more recently higher-density 480x800); “small” is for smaller screens, and “large” is for “substantially larger” screens. Devices that fall in the “large” bucket include the Dell Streak and original 7” Samsung Galaxy Tab. Android 2.3 introduced a new bucket size “xlarge”, in preparation for the approximately-10” tablets (such as the Motorola Xoom) that Android 3.0 was designed to support.
The definitions are:
  • xlarge screens are at least 960dp x 720dp.
  • large screens are at least 640dp x 480dp.
  • normal screens are at least 470dp x 320dp.
  • small screens are at least 426dp x 320dp. (Android does not currently support screens smaller than this.)
Here are some more examples of how this works with real screens:
  • A QVGA screen is 320x240 ldpi. Converting to mdpi (a 4/3 scaling factor) gives us 426dp x 320dp; this matches the minimum size above for the small screen bucket.
  • The Xoom is a typical 10” tablet with a 1280x800 mdpi screen. This places it into the xlarge screen bucket.
  • The Dell Streak is a 800x480 mdpi screen. This places it into the bottom of the large size bucket.
  • A typical 7” tablet has a 1024x600 mdpi screen. This also counts as a large screen.
  • The original Samsung Galaxy Tab is an interesting case. Physically it is a 1024x600 7” screen and thus classified as “large”. However the device configures its screen as hdpi, which means after applying the appropriate ⅔ scaling factor the actual space on the screen is 682dp x 400dp. This actually moves it out of the “large” bucket and into a “normal” screen size. The Tab actually reports that it is “large”; this was a mistake in the framework’s computation of the size for that device that we made. Today no devices should ship like this.

Issues With Buckets

Based on developers’ experience so far, we’re not convinced that this limited set of screen-size buckets gives developers everything they need in adapting to the increasing variety of Android-device shapes and sizes. The primary problem is that the borders between the buckets may not always correspond to either devices available to consumers or to the particular needs of apps.
The “normal” and “xlarge” screen sizes should be fairly straightforward as a target: “normal” screens generally require single panes of information that the user moves between, while “xlarge” screens can comfortably hold multi-pane UIs (even in portrait orientation, with some tightening of the space).
The “small” screen size is really an artifact of the original Android devices having 320x480 screens. 240x320 screens have a shorter aspect ratio, and applications that don’t take this into account can break on them. These days it is good practice to test user interfaces on a small screen to ensure there are no serious problems.
The “large” screen size has been challenging for developers — you will notice that it encompases everything from the Dell Streak to the original Galaxy Tab to 7" tablets in general. Different applications may also reasonably want to take different approaches to these two devices; it is also quite reasonable to want to have different behavior for landscape vs. portrait large devices because landscape has plenty of space for a multi-pane UI, while portrait may not.

Introducing Numeric Selectors

Android 3.2 introduces a new approach to screen sizes, with the goal of making developers' lives easier. We have defined a set of numbers describing device screen sizes, which you can use to select resources or otherwise adjust your UI. We believe that using these will not only reduce developers’ workloads, but future-proof their apps significantly.
The numbers describing the screen size are all in “dp” units (remember that your layout dimensions should also be in dp units so that the system can adjust for screen density). They are:
  • width dp: the current width available for application layout in “dp” units; changes when the screen switches orientation between landscape and portrait.
  • height dp: the current height available for application layout in “dp” units; also changes when the screen switches orientation.
  • smallest width dp: the smallest width available for application layout in “dp” units; this is the smallest width dp that you will ever encounter in any rotation of the display.
Of these, smallest width dp is the most important. It replaces the old screen-size buckets with a continuous range of numbers giving the effective size. This number is based on width because that is fairly universally the driving factor in designing a layout. A UI will often scroll vertically, but have fairly hard constraints on the minimum space it needs horizontally; the available width is also the key factor in determining whether to use a phone-style one-pane layout or tablet-style multi-pane layout.
Typical numbers for screen width dp are:
  • 320: a phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
  • 480: a tweener tablet like the Streak (480x800 mdpi).
  • 600: a 7” tablet (600x1024).
  • 720: a 10” tablet (720x1280, 800x1280, etc).

Using the New Selectors

When you are designing your UI, the main thing you probably care about is where you switch between a phone-style UI and a tablet-style multi-pane UI. The exact point of this switch will depend on your particular design — maybe you need a full 720dp width for your tablet layout, maybe 600dp is enough, or 480dp, or even some other number between those. Either pick a width and design to it; or after doing your design, find the smallest width it supports.
Now you can select your layout resources for phones vs. tablets using the number you want. For example, if 600dp is the smallest width for your tablet UI, you can do this:
res/layout/main_activity.xml           # For phones
res/layout-sw600dp/main_activity.xml   # For tablets
For the rare case where you want to further customize your UI, for example for 7” vs. 10” tablets, you can define additional smallest widths:
res/layout/main_activity.xml           # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
Android will pick the resource that is closest to the device’s “smallest width,” without being larger; so for a hypothetical 700dp x 1200dp tablet, it would pick layout-sw600dp.
If you want to get fancier, you can make a layout that can change when the user switches orientation to the one that best fits in the current available width. This can be of particular use for 7” tablets, where a multi-pane layout is a very tight fit in portrait::
res/layout/main_activity.xml          # Single-pane
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
Or the previous three-layout example could use this to switch to the full UI whenever there is enough width:
res/layout/main_activity.xml                 # For phones
res/layout-sw600dp/main_activity.xml         # Tablets
res/layout-sw600dp-w720dp/main_activity.xml  # Large width
In the setup above, we will always use the phone layout for devices whose smallest width is less than 600dp; for devices whose smallest width is at least 600dp, we will switch between the tablet and large width layouts depending on the current available width.
You can also mix in other resource qualifiers:
res/layout/main_activity.xml                 # For phones
res/layout-sw600dp/main_activity.xml         # Tablets
res/layout-sw600dp-port/main_activity.xml    # Tablets when portrait

Selector Precedence

While it is safest to specify multiple configurations like this to avoid potential ambiguity, you can also take advantage of some subtleties of resource matching. For example, the order that resource qualifiers must be specified in the directory name (documented in Providing Resources) is also the order of their “importance.” Earlier ones are more important than later ones. You can take advantage of this to, for example, easily have a landscape orientation specialization for your default layout:
res/layout/main_activity.xml                 # For phones
res/layout-land/main_activity.xml            # For phones when landscape
res/layout-sw600dp/main_activity.xml         # Tablets
In this case when running on a tablet that is using landscape orientation, the last layout will be used because the “swNNNdp” qualifier is a better match than “port”.

Combinations and Versions

One final thing we need to address is specifying layouts that work on both Android 3.2 and up as well as previous versions of the platform.
Previous versions of the platform will ignore any resources using the new resource qualifiers. This, then, is one approach that will work:
res/layout/main_activity.xml           # For phones
res/layout-xlarge/main_activity.xml    # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets
This does require, however, that you have two copies of your tablet layout. One way to avoid this is by defining the tablet layout once as a distinct resource, and then making new versions of the original layout resource that point to it. So the layout resources we would have are:
res/layout/main_activity.xml           # For phones
res/layout/main_activity_tablet.xml    # For tablets
To have the original layout point to the tablet version, you put <item> specifications in the appropriate values directories. That is these two files:
res/values-xlarge/layout.xml
res/values-sw600dp/layout.xml
Both would contain the following XML defining the desired resource:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="layout" name="main_activty">
@layout/main_activity_tablet
</item>
</resources>
Of course, you can always simply select the resource to use in code. That is, define two or more resources like “layout/main_activity” and “layout/main_activity_tablet,” and select the one to use in your code based on information in the Configuration object or elsewhere. For example:
public class MyActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate();

Configuration config = getResources().getConfiguration();
if (config.smallestScreenWidthDp >= 600) {
setContentView(R.layout.main_activity_tablet);
} else {
setContentView(R.layout.main_activity);
}
}
}

Conclusion

We strongly recommend that developers start using the new layout selectors for apps targeted at Android release 3.2 or higher, as we will be doing for Google apps. We think they will make your layout choices easier to express and manage.
Furthermore, we can see a remarkably wide variety of Android-device form factors coming down the pipe. This is a good thing, and will expand the market for your work. These new layout selectors are specifically designed to make it straightforward for you to make your apps run well in a future hardware ecosystem which is full of variety (and surprises).

 















src : http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29

Custom Class Loading in Dalvik

Custom Class Loading in Dalvik: "
[This post is by Fred Chung, who’s an Android Developer Advocate — Tim Bray]
The Dalvik VM provides facilities for developers to perform custom class loading. Instead of loading Dalvik executable (“dex”) files from the default location, an application can load them from alternative locations such as internal storage or over the network.
This technique is not for every application; In fact, most do just fine without it. However, there are situations where custom class loading can come in handy. Here are a couple of scenarios:
  • Big apps can contain more than 64K method references, which is the maximum number of supported in a dex file. To get around this limitation, developers can partition part of the program into multiple secondary dex files, and load them at runtime.
  • Frameworks can be designed to make their execution logic extensible by dynamic code loading at runtime.
We have created a sample app to demonstrate the partitioning of dex files and runtime class loading. (Note that for reasons discussed below, the app cannot be built with the ADT Eclipse plug-in. Instead, use the included Ant build script. See Readme.txt for detail.)
The app has a simple Activity that invokes a library component to display a Toast. The Activity and its resources are kept in the default dex, whereas the library code is stored in a secondary dex bundled in the APK. This requires a modified build process, which is shown below in detail.
Before the library method can be invoked, the app has to first explicitly load the secondary dex file. Let’s take a look at the relevant moving parts.

Code Organization

The application consists of 3 classes.
  • com.example.dex.MainActivity: UI component from which the library is invoked
  • com.example.dex.LibraryInterface: Interface definition for the library
  • com.example.dex.lib.LibraryProvider: Implementation of the library
The library is packaged in a secondary dex, while the rest of the classes are included in the default (primary) dex file. The “Build process” section below illustrates how to accomplish this. Of course, the packaging decision is dependent on the particular scenario a developer is dealing with.

Class loading and method invocation

The secondary dex file, containing LibraryProvider, is stored as an application asset. First, it has to be copied to a storage location whose path can be supplied to the class loader. The sample app uses the app’s private internal storage area for this purpose. (Technically, external storage would also work, but one has to consider the security implications of keeping application binaries there.)
Below is a snippet from MainActivity where standard file I/O is used to accomplish the copying.
// Before the secondary dex file can be processed by the DexClassLoader,
// it has to be first copied from asset resource to a storage location.
File dexInternalStoragePath = new File(getDir("dex", Context.MODE_PRIVATE),
SECONDARY_DEX_NAME);
...
BufferedInputStream bis = null;
OutputStream dexWriter = null;

static final int BUF_SIZE = 8 * 1024;
try {
bis = new BufferedInputStream(getAssets().open(SECONDARY_DEX_NAME));
dexWriter = new BufferedOutputStream(
new FileOutputStream(dexInternalStoragePath));
byte[] buf = new byte[BUF_SIZE];
int len;
while((len = bis.read(buf, 0, BUF_SIZE)) > 0) {
dexWriter.write(buf, 0, len);
}
dexWriter.close();
bis.close();

} catch (. . .) {...}
Next, a DexClassLoader is instantiated to load the library from the extracted secondary dex file. There are a couple of ways to invoke methods on classes loaded in this manner. In this sample, the class instance is cast to an interface through which the method is called directly.
Another approach is to invoke methods using the reflection API. The advantage of using reflection is that it doesn’t require the secondary dex file to implement any particular interfaces. However, one should be aware that reflection is verbose and slow.
// Internal storage where the DexClassLoader writes the optimized dex file to
final File optimizedDexOutputPath = getDir('outdex', Context.MODE_PRIVATE);

DexClassLoader cl = new DexClassLoader(dexInternalStoragePath.getAbsolutePath(),
optimizedDexOutputPath.getAbsolutePath(),
null,
getClassLoader());
Class libProviderClazz = null;
try {
// Load the library.
libProviderClazz =
cl.loadClass('com.example.dex.lib.LibraryProvider');
// Cast the return object to the library interface so that the
// caller can directly invoke methods in the interface.
// Alternatively, the caller can invoke methods through reflection,
// which is more verbose.
LibraryInterface lib = (LibraryInterface) libProviderClazz.newInstance();
lib.showAwesomeToast(this, 'hello');
} catch (Exception e) { ... }

Build Process

In order to churn out two separate dex files, we need to tweak the standard build process. To do the trick, we simply modify the “-dex” target in the project’s Ant build.xml.
The modified “-dex” target performs the following operations:
  1. Create two staging directories to store .class files to be converted to the default dex and the secondary dex.
  2. Selectively copy .class files from PROJECT_ROOT/bin/classes to the two staging directories.
          <!-- Primary dex to include everything but the concrete library
    implementation. -->
    <copy todir="${out.classes.absolute.dir}.1" >
    <fileset dir="${out.classes.absolute.dir}" >
    <exclude name="com/example/dex/lib/**" />
    </fileset>
    </copy>
    <!-- Secondary dex to include the concrete library implementation. -->
    <copy todir="${out.classes.absolute.dir}.2" >
    <fileset dir="${out.classes.absolute.dir}" >
    <include name="com/example/dex/lib/**" />
    </fileset>
    </copy>     
  3. Convert .class files from the two staging directories into two separate dex files.
  4. Add the secondary dex file to a jar file, which is the expected input format for the DexClassLoader. Lastly, store the jar file in the “assets” directory of the project.
        <!-- Package the output in the assets directory of the apk. -->
    <jar destfile="${asset.absolute.dir}/secondary_dex.jar"
    basedir="${out.absolute.dir}/secondary_dex_dir"
    includes="classes.dex" />
To kick-off the build, you execute ant debug (or release) from the project root directory.
That’s it! In the right situations, dynamic class loading can be quite useful.

"

Black & White Digital Wall Clock

Black & White Digital Wall Clock: "

You have been tired of those circular wall clocks? Then you may like to check the Black & White digital wall clock. Wish its innovative design can meet your taste.


Black & White Digital Wall Clock



As we can see from the images, Black & White is a unique wall clock without any casing. The digital clock consists of four figures. Each figure measures 60 x 110 x 10mm, and is made of polycarbonate and OLED. And every figure has self-contained power supply (lithium-ion accumulators) and independent control. All you need to do is to fix the four figures on the wall in order that the innovative wall clock can show you the time in minimalist style. Apart from that, the digital clock also features a built-in light sensor, which switches the figures from white to black based on day and night.


Black & White Digital Wall Clock


At present, Black & White digital wall clock is under production. The pre-sale is coming. If you’re interested, jump to Kidardindesign for full details. Additionally, if you need more options, you might like to check the domino wall clock and more via “wall clock” tag.




"

The Game Boy: Of Tomb Raider and “Torture Porn”

The Game Boy: Of Tomb Raider and “Torture Porn”: "

Watching one of gaming's most well-known faces plummet multiple stories and impale herself on a jagged iron pipe is an uncomfortable experience, to say the least. But wait, she's not done. Nearly sobbing, she proceeds to wrench her unfortunate new appendage from her side while emitting a skin-crawling

Wednesday, August 10, 2011

Google Could Make App Inventor Open Source [Google]

Google Could Make App Inventor Open Source [Google]: "
Google hinted its educational tool, App Inventor for Android, may become an open source project for classroom teachers. More »






"

Comments