Hi,
In reference to my earlier post on the RIL patent application:
The patents containts quite a detailed description of the API including prototypes and structures. It is not fully complete, but still it should be a big help to anyone wanting to develop with it.
Particularly on
http://ofi.epoline.org/view/GetDossier?dosnum=1233343&lang=EN
Detailed information can be found in the entry:
- Appendix to new European patent application
Also note that the whole American patent application is included.
Maybe someone can find the time to create a header file out of this :wink:
Related
This is a short summary of some important general points for posting new ROM's.
It should be considered as an optional "add-on" to the general thread:
"Galaxy S I9000 Android Development **STICKY THREAD** Read here first!"
The number of man hours spent working and developing new custom ROMs are astronomical! So why then, is it that so few new ROMs are successful? Basically because of lack of information and poor public visibility/involvement of the developers themselves. It's just like in any other successful business, you have to make your product or service stand out from the rest. Either by making an amazing product or by being a great inspiration for others to follow. Here I will try to explain and list some fundamental ideas, in order to make your ROM better and more popular.
When a would be ROM flasher is looking around for a new ROM, he searches the web and the XDA-forums for threads, usually beginning with the text "[ROM]". Next he/she look at the FIRST page where the developer (and his/her team) is presenting the various features of their new design. What is presented there will often be a decision maker for whether or not someone wants to try it out.
There are a few things that consistently differs between "good" ROMs and "bad/poor" ROM's. These things are often and naturally related to the amount of information available around the ROM in question. Someone who have put down enough mind, sweat and hart into the production (cooking) of a ROM, would also like to share his/her effort in the best possible way, not minding writing a detailed and useful description about their product. The items found below are part of some of these things that do MAKE A DIFFERENCE.
- Primary Purpose:
Essentially a description why you want to provide this ROM and why you think it is needed. What are the main features and driving forces for providing this ROM?
- Ultimate Gaming Experience
- Super stability
- Super Compatibility
- Great Battery Duration
- Minimalistic User Interface (UI)
- Simple to use functionality
- Latest and coolest never seen before interface behavior
- Fully loaded with ultimate editions of absolutely everything
- Mobile Penetration Testing Platform
- or perhaps just for educational or experimental purposes etc...
- Up-to-date Maintenance:
That means an active developer (or group of) who are readily available to answer questions from users of all levels, new or advanced! Often that they should be inhumanly available at all times of the day & night!
- Up-to-date Firmware Release:
That means the the source of your ROM is preferably based on the latest, but publicly available code/firmware. Not on some hidden leaks or old hacked code. When I say "hidden leaks" here, I mean the kind where the origin of the code (compiled or not) cannot be verified or downloaded. (BMW doesn't make car/sales advertisements using 2 year old engines from unknown/secret sources!)
- Detailed CHANGE-LOG:
People want to know that what they flash on their phones, is as close as possible to what they would like to see and use. Also from a paranoia perspective most of us would like to know that it doesn't contain 3rd party or other strange applications that we will never use, or which will give us trouble when we want to add/update applications, at a later time. A description of the various applications is also very useful. Most people would wonder what the "DarkBotSendHelper.apk" is doing on a phone.
A change-log would ideally consist of a list with:
- Title: Change Date and the custom ROM Version the changes apply to
- Full application name
- Full application version
- Short application description
- Link to application source-code, if available
- Link to application on "Android Market"
- Reference to what hacks has been made, if any
- Reason for why the hack is needed
- Unresolved BUG-LOG:
A brief log of bugs and unresolved issues that affects the current release. It is hard to explain without cussing how annoying it is to flash a new ROM, just to find out that some WiFi issue has not yet been resolved, which was posted on page 456/1200! If people post bugs/issues, that cannot be immediately resolved, please add those issues to the BUG-LOG, on the front page.
- Screen Shots! Updated Screen Shots!
The importance of good screen shots can never be enough emphasized! Many ROMs are updated continuously and if the screen-shots doesn't match what the user installs, he's gonna go WTF!, and will start to peppering your support threads with questions about how to install this and that, and how to get the same themes you are using in those screenshots, or from another different ROM altogether! You wouldn't be able to sell a new BMW with a picture of an old Volvo, would you? So why do you think a ROM would be any different? Also include a brief caption about the essential feature(s) shown, for each picture.
- Detailed Installation Instructions
This hardly need more explanation apart for making sure you also say something about:
- WIPE/No-WIPE
- Bootloader Requirements
- Recommended Procedure
- Detailed Device Compatibility List
Yes, the same gross model name/number of a particular device, may very well have some minor variations that can render the device completely incompatible with software from it's apparent twin-brother. Or even certain Firmwares may not be compatible to slight manufacturing variation. See for example the "Samsung Galaxy S" with their sub-models GT-I9000(B/M/T), and to complicate things further, even within the same model there may be slight differences, like in the PCB of the USB-port of the SGS2 GT-I9100.
- Detailed Language Compatibility
What do people use their phones for? Communication! Sure, some use them as a game pad, but after all it is primarily a browsing and communication device. So if you can't use your primary languages with your device, it is useless! Although some network operators are only beginning to understand that most of the connected world is at least bi-lingual and often much more. Thus it is of essence that your phone's keyboard, screen-reader and web-browser can read, display and understand most characters and alphabets around. (I.e. I still fail to understand why it is virtually impossible to find a phone with Russian, English, Spanish and Norwegian keyboard layouts/character sets or at least let me select these my self!) In addition it is very confusing for a first-time ROM flasher to understand the need for all the various PDA/PHONE and CSC region settings, which are often modified and re-packaged for a well cooked ROM, and thus no longer adhere to the original regional code.
So when you cook your ROM, please provide as much information as possible regarding how the user can adapt their phone to his/her own languages. This information includes at least:
- What languages are available for basic operation (the operating system)
- What languages are available for the keyboard mappings
- What keyboard applications can use these languages (Swype, Samsung Keyboard etc.)
- Simple instructions how to include, use and set the phone languages
- List of Technical Terms and Definitions that describe the ROM
The world of mobile device development is packed by technical jargon and abbreviated terms. Many times they are also abbreviated and used in the wrong context, although some the community know what it means. Simplify your vocabulary and clearly define your terms and stay with community standard ones!
- General Presentation
Like any other business presentation, please skip the HUGE fonts in a zillion colors. Most of us are neither blind nor illiterate, but you may risk to come across as being both, with those type of fonts. Remember "KISS"? - Keep It Simple Stupid.
- SPELL CHECK!!
It's embarrassing and very annoying to read descriptions of how great, professional and how well maintained a particular ROM is, when the text is riddled with misspellings, wrong words and childish grammatical errors. Although most of us are very understanding that we are living in a multicultural and multilingual society, sometimes all I think about is, how a person who doesn't know how to spell check, could ever be able to cook a mobile phone ROM. Most text editors feature at least some basic spell checking, bloody hell, USE IT!
- CREDITS
Most of the Android development community is completely driven by voluntary and open source work. Make sure to include the correct credits to those persons who have contributed to the various info/hacks/software that you include in your ROM. Use a separate list for the credits, that include the name (handle) and how/what he/she did to contribute.
2 Good Examples:
http://forum.xda-developers.com/showthread.php?t=1350763
http://forum.xda-developers.com/showthread.php?t=1155776
Final Words:
It is very likely I have missed something here, or that you (as a developer or moderator) disagree on something I have written here, if so, please provide your constructive comments how I can improve this list and post.
In Great Expectations and Hope for Many New Amazing ROMs!
- E:V:A -
PS. This was posted in the "Developer Section" as it applies only to new ROM development threads, and I wouldn't consider this neither as "Q/A" nor "General". But if OP/MOD know of a better suited place, please just move it there...
Also I am not aware of a similar post to this one, even after searching XDA quite a lot. So if it already exists, it is not easy to find and should be reposted or stickied!
<Reserved>
@E:V:A
The only thing that I missed so far is a thread like yours.
Agree on all requirements of released software.
Sometimes I wonder how some "devs" priorities are stacked regarding quality control vs. early delivery on pay-per-download sites.
Not sure what is best place for this thread. Counting # of posts in General asking Q already answered in stickies, it's kind of accepted to skip reading what's there. :-\
Perhaps keep it alive as hottest thread here?
Tapatalked - There's a Thanks button somewhere
I like this
One thing you must add while promoting your ROM.. That is CREDITS.
Rahulrulez said:
I like this
One thing you must add while promoting your ROM.. That is CREDITS.
Click to expand...
Click to collapse
YES! Not giving credit where due is horrible, basically just forgetting all the hard work another individual has put in to the "feature" of your ROM. Also, this should probably be in general.
I have been doing hours and hours of research to understand and reverse the UIX framework that Windows Phone native apps use. This thread will eventually become an organized source of information about the entire process.
I have a ton of information already that doesn't seem to exist yet on the internet, so I'm assuming this information will be new to almost everyone. However, right now it's very scattered so I will not be posting it here until more progress is made.
What's possible in the future:
Visual changes and small functional changes to existing UIX for a native appCreating native applications from scratch
What's not possible in the future:
Editing the core functionality of existing UIX native apps, like the Start Menu.
The reason for these possibilities and limitations is best compared to XAML/C++ applications. The UIX is like XAML, which we can edit, but the core functionality is in C++.
Here is a full UIX file in its XML state from Zune: http://pastebin.com/yRwXmNcL
This will help understand how the markup language works.
From my research, I have enough evidence to support that the compiled UIX binaries are able to be decompiled back to its original XML state.
I'm not sure how long it will be until I have enough info for this thread, but I want this information to be public for everyone to utilize. With that said, anyone who wants know more about what I've learned can PM me here, or contact me on Skype at "[email protected]" and I will explain everything that I have learned so far.
Reserved
Reserved #2
Hey guys!
A few months back, I posted an app called DetectCPU. It got quite some attention, which I did not think it would. I hoped so, but I thought that it'd get ignored like other projects of mine. But that did not happen.
In the thread, I was asked if I couldn't port it to C# or C++ or something so one could make something like CPU-Z.
Well, today I didn't do that, no. Today I created a .Net lib (.dll) containing most of the information that DetectCPU gets and more!
It's called SysLib, it's coded in Visual Basic.Net and can be used with ANY .Net application (.Net languages include: Visual basic.Net, C#, Visual C++)
At the moment it contains but three classes: CPU, Baseboard and Battery within a namespace called GetInfo.
Here are the prerequisites for your application:
.Net 2.0 or higher
Must use .Net framework!
Windows Vista and higher is recommended as some WMI queries are not available for Windows XP and lower.
How to use the lib:
Add SysLib.dll as a reference to your program.
Import SysLib.GetInfo to your class/es (To get the information)
Add the class as a variable (Private cpu As SysLib.GetInfo.CPU = New CPU)
Have fun!
Click to expand...
Click to collapse
GitHub Homepage for SysLib: http://beatsleigher.github.io/SysLib/
Download: Sourceforge
Source Code: GitHub
License:
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
Click to expand...
Click to collapse
Want to read an awesome review about SysLib? Check out the review by Will Verduzco here!
Changelog
Changelog/s
V.1.0 said:
Started Project
Added Namespace GetInfo
Added Class CPU
Added Class BaseBoard
Added Class Battery
Click to expand...
Click to collapse
V1.1 said:
Added Class BIOS
Added Class BootConfig
Added Class CDROMDrive
Added Class ComputerSystem
Click to expand...
Click to collapse
-deleted-
It's an offtopic, but I'm curious to ask you.
Why do you need Nvidia GeForce 770 GTX? I have 2 times slower graphics, but it doesn't affect on my productivity. I advise you to buy SSD
Useless guy said:
It's an offtopic, but I'm curious to ask you.
Why do you need Nvidia GeForce 770 GTX? I have 2 times slower graphics, but it doesn't affect on my productivity. I advise you to buy SSD
Click to expand...
Click to collapse
Gaming perhaps... Or high end 3d rendering, hell some render tasks will overtax a GTX770 even
Useless guy said:
It's an offtopic, but I'm curious to ask you.
Why do you need Nvidia GeForce 770 GTX? I have 2 times slower graphics, but it doesn't affect on my productivity. I advise you to buy SSD
Click to expand...
Click to collapse
I plan on learning C++ and Java and I'd like to add some awesome graphics and animations to my programs to make thrm more appealing. And to do that I need a rather high-end system. And the occasional game will also be installed.
Sent from my GT-I9505 using xda app-developers app
Hi! We have published a new app and would appreciate some honest feedback info below.
App store link: https://play.google.com/store/apps/details?id=com.vi.newsoi.reader
About the app:
We have started to implement an app that evaluates how read-worthy different articles in the internet are. First we made a webapp that displays the current best articles and now have published also an app that displays the article feed for that webpage.
About the algorithm:
Some of the metrics used to evaluate an article are for example how topical the article is, how trending it is and how readable, coherent or objective the article is. These metrics we are the most confident in and of course we do not want to give the full algorithm available.
Future plans:
This is really much a work in progress and suggestions for future development are very welcome. For example now it is possible only to see random top ranked articles. Of course the idea is to make it categorize the articles and then you can browse the articles by categories (sports, world news etc.). Also allowing the user to add their own sources, for example blogs and other text based sources.
Homepage:
http://newsoi.net
VilleI said:
Hi! We have published a new app and would appreciate some honest feedback info below.
App store link: https://play.google.com/store/apps/details?id=com.vi.newsoi.reader
About the app:
We have started to implement an app that evaluates how read-worthy different articles in the internet are. First we made a webapp that displays the current best articles and now have published also an app that displays the article feed for that webpage.
About the algorithm:
Some of the metrics used to evaluate an article are for example how topical the article is, how trending it is and how readable, coherent or objective the article is. These metrics we are the most confident in and of course we do not want to give the full algorithm available.
Future plans:
This is really much a work in progress and suggestions for future development are very welcome. For example now it is possible only to see random top ranked articles. Of course the idea is to make it categorize the articles and then you can browse the articles by categories (sports, world news etc.). Also allowing the user to add their own sources, for example blogs and other text based sources.
Homepage:
http://newsoi.net
Click to expand...
Click to collapse
Well done!
I like the idea of this app...:good:
Hey,
I created my own Lauchner and wanted to integrate the radio functions.
Since I didn't find any information on the internet about how the original app addresses the radio module, I reverse engineered the app.
To make it easier for others I decided to start an Android Studio project.
The project is only very basic to show how the radio module is controlled.
I also added an extension to it.
Using the RDS signal and a SQlite database the station name and logo are displayed.
I hope it is helpful to anyone.
I uploaded the project to Github:
-https://github.com/zebbel/MTCD-E_Radio-app
(Sorry I´m not allowed to post links)
Kind regards
David
Great work!
Hey,
I have compiled the CarManager module into a jar file for easier use in Android Studio projects.
To be honest I never tried to understand how it works exactly, because it just works :laugh:
I know that I downloaded the files somewhere on Github, but I have absolutely no idea where.
If the "creator" of the files is here please let me know so I can give him credit.
-https://github.com/zebbel/microntek_CarManager
(I need still more posts to create links )
Thank you very much for your work!
Thanks to your library I realized a widget that reads (and shows) the battery voltage value.
I have a question : do you have a complete list of "type" that can be used ?
In you example you attached to your handler the types:
- Radio
- KeyDown
In my case I used "CarEvent" :
Java:
CarManager carManager = new CarManager();
CarManagerHandler carManagerHander = new CarManagerHandler(this);
carManager.attach(carManagerHander, "CarEvent");
In this way my Handler is receiving all the CarEvents. The voltage is contained in the message tagged as "battery".
There are other types that we can use in order to catch other interesting events?
Thank you,
Salvo