NextMe

iPhone: arriva l'app che ci regala una fidanzata virtuale

virtual-girlfriend-app

Siete tristi e vi manca una compagnia femminile? Nessun problema. Basta un'applicazione per il vostro smartphone. Si chiama 'Honey, It's me' e consente all'utente di ricevere chiamate video e messaggi da una bellissima ragazza, rigorosamente virtuale. 

Gli sviluppatori dell'applicazione, in Corea del Sud, hanno registrato la voce di una modella, associandola alla 22enne ragazza virtuale ribattezzata Mina. Scaricando l'app, la vostra amichetta vi invierà messaggi di buongiorno e buonanotte e molti altri, per informarsi di voi. "Stai ancora dormendo?". Oppure:  "Buona notte, sogni d'oro". Ma la giovane amica potrà anche telefonare, ovviamente parlando in coreano.

Sono oltre 100 i messaggi registrati, ma purtroppo ancora solo in una lingua. Lanciata lo scorso 30 novembre, l'applicazione iPhone conta al momento oltre 80 mila download al giorno, ancora più numerosi nella fase iniziale. Dopo i primi tempi, visto il successo riscosso, la versione gratuita è stata sostituita con una a pagamento ($ 1,99) disponibile sull'iTunes Store di Apple

"Ho sviluppato questa applicazione pensando alle persone che soffrono la solitudine", ha spiegato Kim Yoon-Kak, capo della Nabix, l'azienda che ha sviluppato l'applicazione.  

Il team della Nabix sta lavorando al momento su nuove versioni di 'Honey, It's Me' con un numero maggiore di messaggi e in più lingue come inglese, cinese e giapponese. La società prevede di rilasciare la versione free e premium delle app sull'iTunes Store.  

Il team sta anche lavorando ad una versione di Android. Ma un'app sarà davvero in grado di combattere la solitudine?

Francesca Mancuso

Leggi tutti i nostri articoli su Applicazioni e Applicazioni iPhone

!-- // used to save the current hostname var gAvgHostName = ""; var gAvgDataElement = null; var shortened_urls = new Array("tinyurl.com","3.ly","bit.ly","tiny.cc","short.to","is.gd","tr.im"); var border_colors = new Array( "#00A120;", "#EAA500;", "#F57301;", "#D20003;" ); var background_colors = new Array( "#C3E5CA;", "#FEEFAE;", "#FFD3B0;", "#F5D4C1;" ); var images = new Array ( "linkscanner://safe12.png", "linkscanner://caution12.png", "linkscanner://warning12.png", "linkscanner://blocked12.png" ); var showCleanVerdicts = true; var showLowRiskVerdicts = true; var showMedRiskVerdicts = true; function avg_ls_does_url_contain(url, contain) { if ((url == null) || (url.length 1)) { return false; } var strUrl = new String(url); // breakup the url to check var parts = strUrl.split("/"); if (parts.length -1) { return true; } return false; } function avg_ls_valid_gmail_search(url) { if ((url == null) || (url.length 1)) return false; var hostMatch = false; // split the url based on '/' var strUrl = new String(url); var parts =strUrl.split("/"); // need domain and path if ((parts == null) || (parts.length 4)) return false; var domain= parts[2]; var path = parts[3]; if ((domain.indexOf("mail.google.") != -1) || (domain.indexOf("gmail.") != -1)) { // save the hostname to use getting lins gAvgHostName = "google.com&quo;; return true; } return false; } function avg_ls_get_parent_div(element) { if ((element == null) || (element.parentNode == null)) return null; while (element != null) { if ((element.tagName == "DIV") && element.className && (element.className.length > 0)) return element; element = element.parentNode; } // no div return null; } function avg_ls_parse_ads(href) { if (!href) return href; // check for google ad var regex = "^http(s)?\:\/\/([a-zA-Z0-9]+)\.googlesyndication\.com.+\&adurl\=(.+)"; var re = new RegExp(regex); var matches = href.match(re); if (matches && (matches.length >= 4)) { // else we want the fourth value var match = matches[3]; if (match && (match.length > 0)) return match } return href; } function avg_ls_get_gmail_links(doc, processFrames) { if (doc == null) return; var links = new Array(); var anchors = avg_ls_get_anchors(doc); var element = null; var outHref = ""; var elemClass = ""; // loop through all for (var i = 0; (i < anchors.length) && anchors; i++) { element = anchors[i]; // already processed this element if (element.getAttribute("avglschecked")) continue; // initial checks if ((element.href == null) || (element.href.length < 1)) continue; if (avg_ls_does_url_contain(element.href, gAvgHostName)) continue; // don't mark anything but http:// if (element.href.indexOf("mailto") == 0) continue; if (element.parentNode) { var parentDiv = avg_ls_get_parent_div(element); if ((parentDiv.tagName == "DIV") && ((parentDiv.className == "ii gt") || // mail message body (parentDiv.className == "mv") || // top sponsored links (parentDiv.className == "vb") || // right sponsored links (parentDiv.className == "im") || // inside quotes (parentDiv.className == "gmail_quote") // quote )) // right ads { // parse for any ads var newHref = avg_ls_parse_ads(element.href); // add the image avg_ls_check_url(doc, element, newHref); } } } // recursively process all frames if (processFrames && doc.frames && (doc.frames.length > 0)) { for (var j = 0; j < doc.frames.length; j++) { // 'editable' frame it's probably a reply if (doc.frames[j].frameElement.className && (doc.frames[j].frameElement.className.indexOf("editable") != -1)) { continue; } avg_ls_get_gmail_links(doc.frames[j].document, processFrames); } } return links; } function avg_ls_valid_facebook_search(url) { if ((url == null) || (url.length < 1)) return false; var hostMatch = false; // split the url based on '/' var strUrl = new String(url); var parts = strUrl.split("/"); // need domain and path if ((parts == null) || (parts.length < 2)) return false; var domain= parts[2]; if (domain.indexOf("www.facebook.com") != -1) { // save the hostname to use getting links gAvgHostName = "www.facebook.com"; return true; } return false; } function avg_ls_get_facebook_links(doc, processFrames) { if (doc == null) return; var links = new Array(); var anchors = avg_ls_get_anchors(doc); var element = null; var outHref = ""; var elemClass = ""; // loop through all for (var i = 0; (i < anchors.length) && anchors; i++) { element = anchors[i]; // initial checks if ((element.href == null) || (element.href.length < 1)) continue; if (avg_ls_does_url_contain(element.href, gAvgHostName)) continue; // don't put verdicts in areas where typing is going on if (element.parentNode) { var parentDiv = avg_ls_get_parent_div(element); if ((parentDiv.tagName == "DIV") && (parentDiv.className == "Mentions_Input")) continue; } // already processed this element if (element.getAttribute("avglschecked")) continue; avg_ls_check_url(doc, element, element.href); } /*///cbk - take it out for now the home page can't access frameElement // recursively process all frames if (processFrames && doc.frames && (doc.frames.length > 0)) { for (var j = 0; j < doc.frames.length; j++) { if (doc.frames[j].frameElement != null ) { // 'editable' frame it's probably a reply if (doc.frames[j].frameElement.className && (doc.frames[j].frameElement.className.indexOf("editable") != -1)) { continue; } } avg_ls_get_facebook_links(doc.frames[j].document, processFrames); } } *///cbk return links; } function avg_ls_has_image(element) { if ((element == null) || (element.firstChild == null)) return false; var nextElem = element.firstChild; while (nextElem) { if (nextElem.id && (nextElem.id.indexOf("avg_ls_image") != -1)) return true; nextElem = nextElem.nextSibling; } return false; } function avg_ls_update_image(doc, element, image ) { if ((doc == null) || (element == null)) return ; // mark the element as processed element.setAttribute("avglschecked", "1"); // if no image, nothing to add if (image == null) return; // update the image if (element && element.firstChild) { image_elem = element.firstChild; element.firstChild.src = image; } } function avg_ls_add_image(doc, element, image, flyover) { if ((doc == null) || (element == null)) return; // if no image, nothing to add if (image == null) return; // create a new image var img = doc.createElement("img"); img.src = image; img.border="0"; img.hspace="5"; img.id = "avg_ls_image"; img.setAttribute("title", ""); // append the image to the link element.appendChild(img); img = null; var newImg = element.lastChild; if (flyover && newImg && newImg.id == "avg_ls_image") { newImg.attachEvent("onmouseover", function() {avg_ls_showinline(newImg, flyover)}); newImg.attachEvent("onmouseout", function() {avg_ls_hideinline()}); } } var timeoutId = null; var stopGmail = false; function avg_ls_monitor_gmail(doc, processFrames) { // clear the timer if set if (timeoutId) { clearTimeout(timeoutId); timeoutId = null; } // get the links avg_ls_get_gmail_links(doc, processFrames); // reset the if (!stopGmail) timeoutId = setTimeout(function() {avg_ls_monitor_gmail(doc, processFrames);}, 1000); } function avg_ls_monitor_facebook(doc, processFrames) { // clear the timer if set if (timeoutId) { clearTimeout(timeoutId); timeoutId = null; } // get the links avg_ls_get_facebook_links(doc, processFrames); // reset the if (!stopGmail) timeoutId = setTimeout(function() {avg_ls_monitor_facebook(doc, processFrames);}, 1000); } function avg_ls_process_links(doc, processFrames) { if (avg_ls_valid_gmail_search(doc.location.href)) { // process the gmail links stopGmail = false; avg_ls_init_ratings(doc); showCleanVerdicts = false; avg_ls_monitor_gmail(doc, processFrames); } if (avg_ls_valid_facebook_search(doc.location.href)) { // process the facebook links stopGmail = false; avg_ls_init_ratings(doc); showCleanVerdicts = false; avg_ls_monitor_facebook(doc, processFrames); } } function avg_ls_reload(e) { avg_ls_process_links(document, true); } function avg_ls_onload(e) { if (timeoutId) { clearTimeout(timeoutId); timeoutId = null; } var doc = document; // set the event handler for the data element to listen for load/reloads var data_element = doc.getElementById("avglsdata"); if (data_element) { // save data element for use in later iframes gAvgDataElement = data_element; // rowexit event used to notify javascript of a page data load avg_ls_remove_event(data_element, "rowexit", avg_ls_reload); avg_ls_add_event(data_element, "rowexit", avg_ls_reload); // process links for the document avg_ls_process_links(doc, true); } } function avg_ls_get_anchors(doc) { return doc.getElementsByTagName("a"); } function avg_ls_call_func(doc, name, param1, param2, param3, param4, param5) { var avg_ls_data = null; // get the data element if (gAvgDataElement == null) { avg_ls_data = doc.getElementById("avglsdata"); if ((avg_ls_data == null) || (name == null)) { // data element does not exist return; } gAvgDataElement = avg_ls_data; } else { avg_ls_data = gAvgDataElement; } // for some reason you can't fire and event on an element with no parent node if ((avg_ls_data == null) || (avg_ls_data.parentNode == null)) { return; } // set the attributes avg_ls_data.setAttribute("function", name); if (param1) avg_ls_data.setAttribute("param1", param1); if (param2) avg_ls_data.setAttribute("param2", param2); if (param3) avg_ls_data.setAttribute("param3", param3); if (param4) avg_ls_data.setAttribute("param4", param4); if (param5) avg_ls_data.setAttribute("param5", param5); avg_ls_data.fireEvent("onrowenter"); // get the result return avg_ls_data.getAttribute("result"); } function avg_ls_get_image(result) { if ((result == null) || (result.length < 1)) return null; var strResult = new String(result); var parts = strResult.split("::"); if (parts.length < 3) return; var nSeverity = parseInt(parts[0]); var image = null; switch(nSeverity) { case 0: if (showCleanVerdicts) image = images[nSeverity]; break; case 1: if (showLowRiskVerdicts) image = images[nSeverity]; break; case 2: if (showMedRiskVerdicts) image = images[nSeverity]; break; case 3: image = images[nSeverity]; break; default: image = "linkscanner://unknown12.gif"; break; } return image; } // do the url check function avg_ls_check_url(doc, element, href) { if (avg_ls_has_image(element)) return; var result = avg_ls_call_func(doc, "MalsiteCheck", href); if (result == null) return; var parts = result.split("::"); if (parts.length < 3) return; var nSeverity = parts[0]; var riskCategory = parts[1]; var riskName = parts[2]; if ( nSeverity == 0 ) { // safe shortened urls will get checked at mouse over time if (avg_ls_filter_url(href, shortened_urls)) { // add onmouseover for anchors with shortened url avg_ls_add_event(element, "mouseover", avg_ls_mouse_over); return; } } // mark as processed element.setAttribute("avglschecked", "1"); // get the image from the result var image = avg_ls_get_image(result); if (image == null) return; var bgColor = background_colors[nSeverity]; var borderColor = border_colors[nSeverity]; // build the inline html var html = ""; html += "

"; html += "
"; html += riskCategory + "
"; html += riskName + "
"; avg_ls_add_image(doc, element, image, html); } function avg_ls_add_event(obj, name, func) { if (obj.addEventListener) { obj.addEventListener(name, func, false); return true; } else if (obj.attachEvent) { return obj.attachEvent("on"+name, func); } else { return false; } } function avg_ls_remove_event(obj, name, func) { if (obj.removeEventListener) { obj.removeEventListener(name, func, false); return true; } else if (obj.detachEvent) { return obj.detachEvent("on"+name, func); } else { return false; } } function avg_ls_mouse_over(e) { if (e && e.srcElement && e.srcElement.href) { var element = e.srcElement; if (element.tagName == "A") { // check if it has an image already if (avg_ls_has_image(element)) { return; } // add the image, returns the anchor not the image avg_ls_add_image(document, element, "linkscanner://clock12.png"); // do the check and update in the background setTimeout(function() {avg_ls_check_and_update(document, element);}, 1); } } } function avg_ls_get_inline_image(element) { var nextElem = null; if ((element == null) || (element.firstChild == null)) return nextElem; nextElem = element.firstChild; while (nextElem) { if (nextElem.id && (nextElem.id.indexOf("avg_ls_image") != -1)) return nextElem; nextElem = nextElem.nextSibling; } return null; } function avg_ls_inline_hide_verdict(anchor) { var image = avg_ls_get_inline_image(anchor); if ( image ) { image.style.visibility = "hidden"; } } function avg_ls_check_and_update(doc, element) { var result = avg_ls_call_func(doc, "GetFinalUrl", element.href); if (result) { var result2 = avg_ls_call_func(doc, "MalsiteCheck", result); if (result2 == null) return; // remove the mouseover for this element, no need to fire again avg_ls_remove_event(element, "mouseover", avg_ls_mouse_over); // get the image from the result var image = avg_ls_get_image(result2); if (image == null) avg_ls_inline_hide_verdict(element); else { var img_elem = avg_ls_get_inline_image(element); if (img_elem) { img_elem.src = image; } } } } // function to find a url in a filter list function avg_ls_filter_url(url, filter) { var strUrl = new String(url); var parts = strUrl.split("/"); if ((parts == null) || (parts.length / 2; // element the mouse is over, get the center position var posX = offsetLeft(imageElem) + halfX; var posY = offsetTop(imageElem) + halfY; var pageOffsetX = 0; var pageOffsetY = 0; // normalize pos to 0 get amount of scrolling in browser window var hasParentFrame = false; if (window.pageXOffset == undefined) // Microsoft IE { pageOffsetX = document.documentElement.scrollLeft || document.body.scrollLeft; pageOffsetY = document.documentElement.scrollTop || document.body.scrollLeft; var frames = document.frames; if (frames) { for (var i=0; i < frames.length; i++) { if (frames[i].document.getElementById(imageElem.id)) { pageOffsetX = frames[i].document.documentElement.scrollLeft; pageOffsetY = frames[i].document.documentElement.scrollTop; hasParentFrame = true; break; } } } } else { pageOffsetX = window.pageXOffset; pageOffsetY = window.pageYOffset; } posX -= pageOffsetX; posY -= pageOffsetY; //compensate for Firefox 3 if (posX < imgRect.left) posX = imgRect.left+halfX; // setup the offsets var offsetX = posX; var offsetY = posY; // calc where to display on page if ((windowX - posX) > posX) { // right offsetX += halfX; locateX = 1; } else { //left offsetX -= (flyoverX + halfX); } if ((windowY - posY) > posY) { // below if (posY < (windowY/4)) { offsetY -= halfY; locateY = 1; } else { offsetY -= (flyoverY / 2) - halfY; locateY = 2; } } else { // above if ((windowY - posY) < (windowY/4)) { offsetY -= (flyoverY - halfY); } else { offsetY -= (flyoverY / 2) + halfY; locateY = 2; } } // make sure we aren't off the screen if (offsetY < 0) offsetY = 0; if ((offsetY + flyoverY) > windowY) { offsetY = windowY - flyoverY; } else if (scrollBarX && ((windowY - (posY + halfY)) < scrollYWidth)) { //verdict overlaps the horizontal scrollbar offsetY = windowY - (flyoverY + scrollYWidth); } // add page offsets back - if not in frame if (!hasParentFrame) { offsetX += pageOffsetX; offsetY += pageOffsetY; } posX += pageOffsetX; posY += pageOffsetY; var paddedOffsetX = 0; //provide space between icon and flyover var padX = 3; if (locateX == 0) paddedOffsetX = offsetX - padX; else paddedOffsetX = offsetX + padX; // set where to put the flyover flyover.style.top = offsetY + "px"; flyover.style.left = paddedOffsetX + "px"; avg_ls_displayinline(); } function avg_ls_displayinline() { var flyover = document.getElementById('avg_ls_inline_popup'); if (flyover == null) return; // show the flyover flyover.style.visibility = "visible"; } function avg_ls_hideinline() { var flyover = document.getElementById('avg_ls_inline_popup'); if (flyover == null) return; flyover.visibility = "hidden"; //invisible flyover.style.left = "-5000px"; } function offsetTop(element) { var offset = 0; while (element) { offset += element.offsetTop; element = element.offsetParent; } return offset; } function offsetLeft(element) { var offset = 0; while (element) { offset += element.offsetLeft; element = element.offsetParent; } return offset; } // --></span></p> </div> </div>"

NextMe.it è un supplemento di greenMe.it Testata Giornalistica reg. Trib. Roma, n° 77/2009 del 26/02/2009 - p.iva 09152791001 - © Copyright 2009-2012

Top Desktop version