Hej! Vet inte om detta är jätteuppenbart och jag bara missar hur, men hur redigerar man ordlistan på orootad, default rom, skandinavisk tangentbordshantering från market och även medföljande engelsk ordlista? Har fylle-SMSat en del med telefonen och har av mistag sparat ord som ställer till det när man ska exempelvis ska skriva ord med å, ä och ö och använder a och o tangenterna istället och låter autokorrigeringen ta hand om resten... Sen har jag ju även missat ibland och sparat felstavade ord så jag undrar helt enkelt hur man plockarr bort sådana ord.
Hallå här vafan! Det kan ju inte vara omöjligt, det är ju öppen källkod! Det finns inget man inte kan göra med öppen kälkod!
Verkar som om HTC valt att inte ta med den funktionen i Heron men det finns säkert i Magic eftersom den kör vanlig Android, borde finnas i Settings -> Locale & Text -> User dictionary iaf.
På HTC Hero: Settings > Applications > Manage Applications > Touch Input > Clear Data På HTC Magic: I have no idea. Borde finnas Manage Applications där med tycker man? Vet iaf att jag höll på att gå vilse i kompisens Samsung Galaxy när jag skulle jämföra inställningarna mellan min Hero och hans Galaxy... Qapl'a!
Argh vad dumt att man bara kan tömma ordlistan. Nästan bättre att ha kvar något enstaka felstavat ord än att behöva börja om från början.
Japp och det gör den också. "User dictionary" längst ner under "Locale & Text" i Settings. I den ordlistan kan man enkelt gå in och lägga till och ta bort ord. Har iof en nyare version av Android i och med Cyanogenmod.
beror helt på romen. som du säger så finns den i CM och tror det beror på att han slängt in lite från cupcaken. men i stockrom på magic finns den inte iallafall
Nope... helt klart inte. Hittar inga tredjepartsapps på market som verkar kunna hantera det heller EDIT: Happ, clearade datan så nu ska det väl gå. Var ju inte helt van vid telefonen i början och var man dessutom inte nykter så gick det inte alltid så bra att skriva ;P
Inte om det är ett bloomfilter.. då går det inte att ändra i en ändrad ordlista hur öppen än koden är..
Det säger mig inte så mycket, men orden måste sparas någonstans och är koden för HUR de sparas öppen är det ju inte svårt att redigera orden, eller hur? Sen är jag förvisso inte mer än amatörmässig bash-skriptare (med tvivelaktiga python och C++/C#-kunskaper utan någon erfarenhet alls) på sin höjd, så påstår absolut inte att jag vet allt, tvärtom.
har inte kollat filstrukturen i /system/data men nån underkatalog bordet det ligga en databas fil med infon du söker. Android använde sqlite om jag inte minns fel. Kolla efter filer i /system/data med adb (s,lå på USB debuging och kolla Wiki ang adb): adb shell ls /system/data/ sen när du hittar e det bara adb push "sökväg till filen" Sen borde man rimligen kunna redigera den i sqlite lokalt? Bara en teori... ska se om jag får tidf kolla sen om du inte lyckas få fram det själv :-)
Jo, hade ADK upsatt på min gamla laptop med hårddisk och udev-regler för Ubuntu så att ADB-servern skulle hitta telefonen och grejor, men den laptopen gick i graven igår (dimmern till skärmen brann när jag råkade kortsluta den när jag skulle fixa det eviga glappandet). Eee-datorn (den jag skriver från) är lite för liten för att hantera java och ADK om du frågar mig, så tills jag kommer hem till småland och kan låna min brors skärm till VGA-utgången till gamla laptopen kan inget i den stilen göras
I fallet ordlista så sparar man oftast inte hela orden för att de tar för mkt plats. Istället gör man något som kallas för ett bloomfilter. I ett optimerat bloomfiler så kan man bara lägga till ord, inte ta bort dem. Kan förklara mer i detalj om du är intresserad.
Ok, det är inte så mkt. Ett bloomfilter fungerar så att man har en lång binärarray, dvs varje element i arrayen kan ha värde 1 eller 0. Till detta har man ett antal hashfunktioner. En hashfunktion tar in ett tal eller liknande och gör om det till ett nytt tal inom ett intervall. Till exempel så kan vi ha hashfunktionen f, som kanske fungerar på följande sätt: f(Katt) = 23 f(Hund) = 231 f(Marsvin) = 2 Om vi gör ett litet exempel så har vi 3 hashfunktioner: f,g,h För att generera ordlistan så kör vi alla ord genom dessa hashfunktioner (en i taget) och markerar i vår binärarray vart de har gett resultat. Exempelvis så ska vi lägga till katt: f(Katt) = 23 g(Katt) = 211 h(Katt) = 75 Då sätter vi ettor på platserna 23, 211 och 75 i vår array. Står det redan ettor på någon av dessa platser så gör vi inget. Så går vi igenom en hel ordlista och lägger till ord på detta sätt. Sen var vi klara. Det ända vi behöver lägga in i vår mobil är binärarrayen. Vet inte hur stora dessa arrayer blir men de är mkt mkt mkt mindre än hela ordlistan. På samma sätt som orden lades in i bloomfiltret kan man också titta om ett ord ligger i filtret. Om det finns ettor på alla ställen som ett ord hashar till så är det högst troligt att ordet finns i listan. De finns möjlighet att andra ord har hashat och satt ettor på de ställerna, men den chansen är vääldigt liten. Detta gör även att du inte kan lista orden i ordlistan och du kan inte heller ta bort ord. I ditt fall har ordet hashats till några ettor, men vi vet inte om andra ord också använder de ettorna, så vi kan inte ta bort dem.
nog förstår jag att arrayen bli mindre alltid eftersom varje ascii-tecke är 8 bitar långt plus massa minnesbitar för ordningsregler och platsminne etc, så en string-array blir nog några hundra bitar per ord. Antar att man ganska enkelt kan ge alla ord unika nummer genom deras binära siffersumma... eller näe, det kan man ju inte. Hmmm, så dessa hashfunktioner används då till att så att säga "koda ord" till platser i binärarrayen och sedan "avkoda" dem, förstod jag det rätt så? Jag antar att jag inte gjorde det eftersom det inte skulle behövas fler än en funktion i sådant fall (eller snarare en kodningsfunktion som ger varje ord unik siffra och en avkodningsfuktion). Jag har för mig att Android är skrivet C++ och mig veterligen kan man inte dynamiskt expandera arrayer i C++ på samma vis som i exempelvis python. Måste man skapa en skitstor array från början då, om man nu tänker sig att användaren vill lägga till massvis med ord?
Det går ju aldrig riktigt att avkoda det som ligger i ett bloomfilter. Ett bloomfiler har bara funktionerna add och contains, alltså du kan lägga till ett ord och du kan fråga om ett ord finns. Sedan så är inte contains 100% säker, den kan säga att ett ord som inte har lagts till finns. Ett ord som inte du har lagt till i ditt bloomfilter kan ju hasha till platser där andra ord har satt ettor. Som du uttryckte det så går det att koda ord till platser i arrayen, men det går aldrig att avkoda något, hashfunktioner är bara "one-way". En hashfunktion kommer alltid att ha krockar, dvs två ord som hashas med funktionen ger samma sak. Precis som du sa. Därför använder man flera olika hashfunktioner så att man sätter ut flera ettor. Chansen att två ord skulle hasha till samma sak med flera olika funktioner är väldigt liten (försvinnande lite). Dynamiskt expanderande arrayer finns egentligen inte i något språk, beror bara på hur biblioteket är utformat. Men jo, man måste allokera hela arrayen från början och lägga till orden. Dock så i fallet med mobiltelefonen så har den som kodat telefonen från början skapat denna array separat och lagt till de ord som finns i den ordlista han vill skapa. Sedan har arrayen kopierats över till mobilen. Om en användare vill lägga till ett ord får han bara modifiera denna array. Antagligen finns det två kopior av arrayen, en som användaren får modifiera (som är aktiv) och en som man kan göra en restore från.